В моей первой форме у меня есть кнопка, которая запускает вторую форму. Вторая форма запускает RDP. everyting работает нормально, но когда я получаю сообщение-сообщение в форме 1, я не могу получить вторую форму до закрытия ящика сообщений. Как я могу запустить 2 формы отдельно друг от друга?Как запустить 2 формы без ящика сообщений в форме 1 для замораживания формы 2
ответ
Вы должны начать формы с помощью метода Show()
вместо ShowDialog()
.
Я использую метод Show(). Когда отображается вторая форма, я могу получить ее, но мои пользователи должны переключаться между двумя формами. При выполнении некоторых новых действий в форме 1 они могут получить сообщение, а затем они не могут открыть вторую форму до закрытия окна сообщений – maartenvdv
, потому что отображаемые сообщения являются диалоговыми окнами ... –
Я не могу изменить полученные сообщения. .. – maartenvdv
Возможно, вы используете ShowDialog()
вместо Show()
, что отображает вашу форму как способный Диалог.
Я использую метод Show(). Когда отображается вторая форма, я могу получить ее, но мои пользователи должны переключаться между двумя формами. При выполнении некоторых новых действий в форме 1 они могут получить сообщение, а затем они не могут открыть вторую форму до закрытия окна сообщений – maartenvdv
Если вы хотите показать немодельное (немодальное) сообщение пользователю, вы должны создать форму и использовать ее метод Показать вместо того, чтобы показывать окно сообщения. Следующий простой метод создает и показывает форму, которая выглядит как окно сообщения:
public static Form ShowNonModalMessageBox(string title, string text)
{
Form form = new Form();
form.FormBorderStyle = FormBorderStyle.FixedDialog;
form.MinimizeBox = false;
form.MaximizeBox = false;
form.Size = new Size(200, 100);
form.StartPosition = FormStartPosition.CenterScreen;
form.Text = title;
form.SuspendLayout();
Label label = new Label();
label.Text = text;
label.Dock = DockStyle.Fill;
form.Controls.Add(label);
Button okButton = new Button();
okButton.Text = "OK";
okButton.Dock = DockStyle.Bottom;
okButton.Click += delegate(object sender, EventArgs e)
{
form.DialogResult = DialogResult.OK;
form.Close();
};
form.Controls.Add(okButton);
form.ResumeLayout();
form.Show();
return form;
}
Вы можете использовать этот метод, как это, чтобы показать немодальное сообщение пользователя:
Form messageBox = ShowNonModalMessageBox("Title", "This is the message.");
messageBox.FormClosed += messageBox_FormClosed;
private void messageBox_FormClosed(object sender, FormClosedEventArgs e)
{
MessageBox.Show("Form closed with result: " + ((Form)sender).DialogResult.ToString());
}
Спасибо за ваш ответ, но 1) Форма 1 все еще нуждается в замораживании и 2) (сильно измененный) ящики сообщений от другого разработчика, и я не могу их изменить – maartenvdv
You можно назвать родной MessageBox:
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
public static extern int MessageBoxW(IntPtr hWnd, String lpText, String lpCaption, uint uType);
Первым параметром является родительской ручкой, если вы передаете IntPtr.Zero в MessageBox будет родителем-менее. Доступен пример https://github.com/mgigirey/MessageBoxWrapper/tree/master.
- 1. 2 Формы (выберите) - 1 зависит от 2
- 2. Как отобразить данные в диаграмме формы 2 из формы 1
- 3. Silverstripe - 2 формы, 1 действие формы
- 4. Отображение формы 2 до формы 1
- 5. Как получить значения DataGridView.Rows.Columns от формы 2 к форме 1
- 6. 2 HTML-формы в пределах 1 таблицы
- 7. Как запустить 2 потока в одном методе без его замораживания?
- 8. Как слить 2 веб-формы в 1?
- 9. Как передать значение формы 1 в текстовое поле формы 2?
- 10. Выполнение 2 функции без формы
- 11. Обновление формы 1 из формы 2 с помощью pyside
- 12. PHP: 2 формы, 1 загрузка файла
- 13. Вставить в 2 таблицы из 1 формы
- 14. Symfony2 - 2 лица в 1 форме
- 15. 2 формы, 1 вид, 2 таблицы SQL в Django
- 16. 2 формы в кнопке Winform
- 17. Picture box вызывает загрузку формы для замораживания
- 18. Проверка объектов без формы в Symfony 2
- 19. 2 формы к строке 1 Database
- 20. Обновление 2-мерной формы
- 21. 2 формы, 1 страница - WebMatrix/Razor
- 22. Взаимодействия между компонентами 2 формы
- 23. 2 типа ввода для поля формы 1 html
- 24. Создание формы Delphi без замораживания основной темы
- 25. Как отправить содержимое 1 текстовой области в 2 формы?
- 26. ThreadPool и отображение информации без замораживания формы
- 27. Run Пустота из формы 1 с использованием формы 2
- 28. Копирование содержимого 2 входных форм для ввода 1 формы
- 29. submit 2 формы с 1 кнопкой
- 30. Как создать 2 встроенных формы в одной форме Django?
MessageBoxes предназначены для того, чтобы быть модальными по своей природе. Если вы имеете в виду, что ваш RDP не запускается до тех пор, пока вы не закроете окно сообщения, вам необходимо изучить его с помощью потока – Sayse
Невозможно выполнить, если вы не перевернете свой собственный почтовый ящик. Ящики сообщений являются модальными для приложения. – Jcl
RDP работает нормально. Проблема в том, что когда я получаю (через некоторое время) сообщение в форме 1, обе формы замораживаются. Я хочу, чтобы эта форма 1 зависала, но я должен иметь возможность использовать форму 2 и окно сообщений в форме 1 одновременно – maartenvdv