我有一個窗體,並做showdialog。這就像味精盒。我正在做類似窗體在背景
msgBox = new MsgBox();
if (msgBox.InvokeRequired)
{
msgBox.Invoke(new ShowMsg(ShowMessage));
}
else
{
ShowMessage();
}
在顯示消息我在做顯示對話框。但形式有時會在主要形式的背景中出現。請幫忙。
我有一個窗體,並做showdialog。這就像味精盒。我正在做類似窗體在背景
msgBox = new MsgBox();
if (msgBox.InvokeRequired)
{
msgBox.Invoke(new ShowMsg(ShowMessage));
}
else
{
ShowMessage();
}
在顯示消息我在做顯示對話框。但形式有時會在主要形式的背景中出現。請幫忙。
嘗試使用
Form.BringToFront();
http://msdn.microsoft.com/de-de/library/system.windows.forms.control.bringtofront%28v=vs.80%29.aspx
什麼亂七八糟的在這裏!
是MsgBox從Form類派生的自定義類型?如果是這樣,你可以簡單地調用它的ShowDialog方法來以模態方式顯示它。
如果您不能,請分享ShowMessage方法的內容。
您是否在使用線程?
如果你的線程你必須調用父窗體,而不是msgbox本身。
Form frm = new Form();
if (parent.InvokeRequired)
{
parent.Invoke(new ThreadStart(() =>
{
frm.ShowDialog();
}));
}
else
{
frm.ShowDialog();
}
如果你的工作沒有線程只是刪除調用並解釋一下ShowMessage和msgbox做了些什麼。
你怎麼稱ShowDialog
?您必須將主窗口(或其任何子窗口)傳遞給ShowDialog
方法,以便它具有合適的父窗口。
不知道你ShowMsg和ShowMessage方法看起來怎麼樣,但嘗試了這一點:
msgBox = new MsgBox();
if (msgBox.InvokeRequired)
{
msgBox.Invoke((MethodInvoker)delegate() { ShowMessage(); });
}
else
{
ShowMessage();
}
到底是什麼ShowMsg?繼承Delegate的類型? –
使用調試器。您會看到InvokeRequired始終是false。更好的是,你應該得到一個異常,告訴你不能在尚未顯示的表單上使用InvokeRequired。 –