我有一个表格,并对其进行 showdialog。它就像消息框。我正在做类似的事情
msgBox = new MsgBox();
if (msgBox.InvokeRequired)
{
msgBox.Invoke(new ShowMsg(ShowMessage));
}
else
{
ShowMessage();
}
在显示消息中我正在执行显示对话框。但有时该窗体会出现在主窗体的背景中。请帮忙解决这个问题。
你使用线程吗?
如果您的线程必须调用父表单,而不是 msgbox 本身。
Form frm = new Form();
if (parent.InvokeRequired)
{
parent.Invoke(new ThreadStart(() =>
{
frm.ShowDialog();
}));
}
else
{
frm.ShowDialog();
}
如果您在没有线程的情况下工作,只需删除调用并解释一下 ShowMessage 和 msgbox 的作用。
尝试使用
Form.BringToFront();
http://msdn.microsoft.com/de-de/library/system.windows.forms.control.bringtofront%28v=vs.80%29.aspx
这里多么混乱啊!!
MsgBox 是您从 Form 类派生的自定义类型吗?如果是这样,您只需调用其 ShowDialog 方法即可使其以模态方式显示。
如果不行,请分享一下ShowMessage方法的内容。
如何称呼
ShowDialog
?您必须将主窗口(或其任何子窗口)传递给 ShowDialog
方法,以便它有一个正确的父窗口。
不确定你的 ShowMsg 和 ShowMessage 方法是什么样子,但试试这个:
msgBox = new MsgBox();
if (msgBox.InvokeRequired)
{
msgBox.Invoke((MethodInvoker)delegate() { ShowMessage(); });
}
else
{
ShowMessage();
}
我想知道新Form的TopMost属性是否为真。