与我的previous question有关。

在我之前的问题中,我问为什么我的对话框似乎在其他窗口后面打开。 (其他不一定属于我的程序的窗口,例如Excel,Windows资源管理器等)

有人告诉我使用重载的ShowDialog()并将父级作为参数传递。

很好,我已经用重载替换了所有ShowDialog()。

但是我在这里仍然有同样的问题:

static class Program
{
  /// <summary>
  /// The main entry point for the application.
  /// </summary>
  [STAThread]
  static void Main()
  {
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);

    OpenFileDialog ofd = new OpenFileDialog();
    ofd.ShowDialog(); // First dialog

    // Do some stuff here...

    SaveFileDialog sfd = new SaveFileDialog();
    sfd.ShowDialog(); // Second dialog;
  }
}

在此示例中(不要评论代码-我只是将其编写为一个简单示例),用户双击其屏幕上带有多个窗口的可执行文件。 OFD出现在顶部,而SFD出现在所有内容的下面。

我通常在我的简单程序中设置了这种OFD/SFD,这些程序接受CSV或XLS文件并对其进行一些简单处理。在这种情况下,如果没有参数传递给exe,则将OFD代码放入静态Main()方法中并加载对话框。

最佳答案

模态对话框并不是要以这种方式使用,尽管无论如何也无法阻止您这样做。

如shsmith所说,您必须有一个Application.Run

对于您在问题中给出的简单示例,我将显示一个带有进度条和/或滚动日志状态文本的小窗口。

10-08 07:45