It is modal only to the windows you created in the same thread. None, I'm sure in your case. Just use Control.Invole() to make it modal to the UI thread. For example:
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
}
private delegate DialogResult MessageBoxDelegate(string msg, string title, MessageBoxButtons buttons, MessageBoxIcon icon);
private void button1_Click(object sender, EventArgs e) {
backgroundWorker1.RunWorkerAsync();
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) {
this.Invoke(new MessageBoxDelegate(ShowMessage), "waz here", "nobugz", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
private DialogResult ShowMessage(string msg, string title, MessageBoxButtons buttons, MessageBoxIcon icon) {
return MessageBox.Show(this, msg, title, buttons, icon);
}
}
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
}
private delegate DialogResult MessageBoxDelegate(string msg, string title, MessageBoxButtons buttons, MessageBoxIcon icon);
private void button1_Click(object sender, EventArgs e) {
backgroundWorker1.RunWorkerAsync();
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) {
this.Invoke(new MessageBoxDelegate(ShowMessage), "waz here", "nobugz", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
private DialogResult ShowMessage(string msg, string title, MessageBoxButtons buttons, MessageBoxIcon icon) {
return MessageBox.Show(this, msg, title, buttons, icon);
}
}
Комментариев нет:
Отправить комментарий