C# MessageBox.Show()未显示在ShowDialog窗体顶部

C# MessageBox.Show()未显示在ShowDialog窗体顶部,c#,winforms,showmodaldialog,C#,Winforms,Showmodaldialog,我有以下代码,它将窗体显示为ShowDialog() 问题是call MessageBox.Show没有在已经显示的ogin.ShowDialog()表单前面(顶部)显示消息框。你知道为什么吗 我尝试更改MessageBox.Show以包括所有者表单,如下所示 MessageBox.Show(oLogin, Ex.Message, "IMPORTANT MESSAGE", MessageBoxButtons.OK, MessageBoxIcon.Error); 但是仍然有相同的问题。尝试: D

我有以下代码,它将窗体显示为ShowDialog()

问题是call MessageBox.Show没有在已经显示的ogin.ShowDialog()表单前面(顶部)显示消息框。你知道为什么吗

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

MessageBox.Show(oLogin, Ex.Message, "IMPORTANT MESSAGE", MessageBoxButtons.OK, MessageBoxIcon.Error);
但是仍然有相同的问题。

尝试:

DialogResult oDialogResult = oLogin.ShowDialog(this);

粘贴的代码与您描述的不一样—当MessageBox显示时,另一个对话框已经关闭—因此前面没有可显示的对话框


粘贴实际代码或更好地提问。

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

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

然后,将try/catch块添加到任何类上的FormClosing事件处理程序中,如果我添加“this”,我就会得到这个错误关键字“this”在静态属性静态方法或静态字段初始值设定项中无效。上面这部分代码位于应用程序的static void Main()方法中。对不起,我认为它在表单中。是的,这就是问题所在。另一个对话框已关闭,但原因是什么?@Tommo1977,因为奥林有代码关闭表单以响应某些按钮单击?@Emi987您是对的,这就是它的工作方式。那么,如何使MesageBox.Show显示在ShowDialog()前面呢?您不能。ShowDialog()根据设计显示了一个模式对话框,它在对话框关闭之前阻止该线程的执行。您真正想要做的事情记录在下面。有点明显。您可以在事件分配DialogResult属性之前触发事件。CancelEventHandler类型的事件将是逻辑选择,因此您也可以停止对话框关闭。与OpenFileDialog.FileOk事件进行比较。
Application.EnableVisualStyles(); 
Application.SetCompatibleTextRenderingDefault(false); 
Application.Run(oLogin);