MessageBox.Show()不显示在ShowDialog表单之上

时间:2014-07-15 09:41:29

标签: c# winforms showmodaldialog

我有以下代码将表单显示为ShowDialog()。

static void Main()
{

    DialogResult oDialogResult = oLogin.ShowDialog();

    if (oDialogResult == DialogResult.OK)
    {
       try
       {
           //do something here
       }
       catch (Exception Ex)
       {
            MessageBox.Show(Ex.Message, "IMPORTANT MESSAGE", MessageBoxButtons.OK, MessageBoxIcon.Error);
       }
   }
}

问题是调用MessageBox.Show没有在已经显示的oLogin.ShowDialog()表单的前面(在其上面)显示消息框。你知道为什么吗?

我尝试更改MessageBox.Show以包含所有者表单,如下所示;

MessageBox.Show(oLogin, Ex.Message, "IMPORTANT MESSAGE", MessageBoxButtons.OK, MessageBoxIcon.Error);

但仍有同样的问题。

3 个答案:

答案 0 :(得分:1)

您粘贴的代码没有按照您的描述进行操作 - 在显示MessageBox时,另一个Dialog已经关闭 - 因此前面没有显示对话框。

粘贴您的实际代码或更好地提出您的问题。

答案 1 :(得分:0)

将Main()方法中的代码更改为最初创建的visual studio项目模板: -

Application.EnableVisualStyles(); 
Application.SetCompatibleTextRenderingDefault(false); 
Application.Run(oLogin);

然后,将try / catch块添加到任何类为oLogin

的FormClosing事件处理程序中

答案 2 :(得分:-1)

尝试:

DialogResult oDialogResult = oLogin.ShowDialog(this);