我有一个表格,并在那上做showdialog。它就像msg盒子。我正在做类似
的事情 msgBox = new MsgBox();
if (msgBox.InvokeRequired)
{
msgBox.Invoke(new ShowMsg(ShowMessage));
}
else
{
ShowMessage();
}
在show message中我正在做Show Dialog。但形式有时会出现在主要形式的背景中。请帮忙。
答案 0 :(得分:2)
你在使用线程吗?
如果您的线程必须调用父表单,而不是msgbox本身。
Form frm = new Form();
if (parent.InvokeRequired)
{
parent.Invoke(new ThreadStart(() =>
{
frm.ShowDialog();
}));
}
else
{
frm.ShowDialog();
}
如果没有线程的工作只是删除调用并解释一下ShowMessage和msgbox做了什么。
答案 1 :(得分:1)
尝试使用
Form.BringToFront();
http://msdn.microsoft.com/de-de/library/system.windows.forms.control.bringtofront%28v=vs.80%29.aspx
答案 2 :(得分:0)
这里真是太乱了!
是MsgBox你的自定义类型派生自Form类?如果是这样,你可以简单地调用它的ShowDialog方法让它以模态显示。
如果您不能,请分享ShowMessage方法的内容。
答案 3 :(得分:0)
你如何致电ShowDialog
?您必须将主窗口(或其任何子窗口)传递给ShowDialog
方法,因此它具有正确的父窗口。
答案 4 :(得分:0)
不确定您的ShowMsg和ShowMessage方法是什么样的,但试试这个:
msgBox = new MsgBox();
if (msgBox.InvokeRequired)
{
msgBox.Invoke((MethodInvoker)delegate() { ShowMessage(); });
}
else
{
ShowMessage();
}