表格进入后台

问题描述 投票:0回答:6

我有一个表格,并对其进行 showdialog。它就像消息框。我正在做类似的事情

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

在显示消息中我正在执行显示对话框。但有时该窗体会出现在主窗体的背景中。请帮忙解决这个问题。

c# winforms compact-framework
6个回答
2
投票

你使用线程吗?

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

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

如果您在没有线程的情况下工作,只需删除调用并解释一下 ShowMessage 和 msgbox 的作用。



0
投票

这里多么混乱啊!!

MsgBox 是您从 Form 类派生的自定义类型吗?如果是这样,您只需调用其 ShowDialog 方法即可使其以模态方式显示。

如果不行,请分享一下ShowMessage方法的内容。


0
投票

如何称呼

ShowDialog
?您必须将主窗口(或其任何子窗口)传递给
ShowDialog
方法,以便它有一个正确的父窗口。


0
投票

不确定你的 ShowMsg 和 ShowMessage 方法是什么样子,但试试这个:

msgBox = new MsgBox();
if (msgBox.InvokeRequired)
{
  msgBox.Invoke((MethodInvoker)delegate() { ShowMessage(); });
}
else
{
  ShowMessage();
}

0
投票

我想知道新Form的TopMost属性是否为真。

© www.soinside.com 2019 - 2024. All rights reserved.