形式进入背景

时间:2011-07-28 12:57:59

标签: c# winforms compact-framework

我有一个表格,并在那上做showdialog。它就像msg盒子。我正在做类似

的事情
    msgBox = new MsgBox();
    if (msgBox.InvokeRequired)
    {
      msgBox.Invoke(new ShowMsg(ShowMessage));
    }
    else
    {
      ShowMessage();
    }

在show message中我正在做Show Dialog。但形式有时会出现在主要形式的背景中。请帮忙。

5 个答案:

答案 0 :(得分:2)

你在使用线程吗?

如果您的线程必须调用父表单,而不是msgbox本身。

Form frm = new Form();
if (parent.InvokeRequired)
{
    parent.Invoke(new ThreadStart(() =>
        {
            frm.ShowDialog();
        }));
}
else
{
    frm.ShowDialog();
}

如果没有线程的工作只是删除调用并解释一下ShowMessage和msgbox做了什么。

答案 1 :(得分:1)

答案 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();
}