Подтвердить что ты не робот

Неавтомобильные MessageBoxes в С#

Кто-нибудь знает messageBox в .NET, который не блокирует поток, который создал его до его закрытия?

4b9b3361

Ответ 1

По умолчанию MessageBox, который вы используете через пространство имен System.Windows.Forms, всегда будет Modal (т.е. Blocking). Если вы хотите иметь сообщение с сообщением Modeless, вы должны создать свой собственный WindowsForm, который выглядит как MessageBox.

Затем вы отобразите эту форму следующим образом:

// C#
//Display frmAbout as a modeless dialog
Form f= new Form();
f.Show();

Ответ 2

private void ShowMessageBox(string text, string caption)
{
    Thread t = new Thread(() => MyMessageBox(text, caption));
    t.Start();
}

private void MyMessageBox(object text, object caption)
{
    MessageBox.Show((string)text, (string)caption);
}

Вы можете позвонить ShowMessageBox() с текстом и надписью. Это простой пример, вы можете добавить кнопки или значки владельца или другие аргументы, которые вы хотите.

Ответ 3

Возможно, самым простым является:

Thread t = new Thread(() => MessageBox.Show(text));
t.Start();

Ответ 4

Вы можете упростить эти другие ответы до одной строки кода

new Thread(() => System.Windows.Forms.MessageBox.Show(text).Start();