c# - 以 MDI 形式多次防止同一个子窗口

标签 c# .net

我正在开发 C# 桌面应用程序,在 MDI 窗体中,当您单击菜单时会打开同一个子窗口,同时显示该窗口的第一个实例。 如何防止 MDI 窗体中出现这些子窗口的多个实例?

最佳答案

您可以检查表单是否已经打开:

  Form instance = null;

  // Looking for MyForm among all opened forms 
  foreach (Form form in Application.OpenForms) 
    if (form is MyForm) {
      instance = form;

      break; 
    }

  if (Object.ReferenceEquals(null, instance)) {
    // No opened form, lets create it and show up:
    instance = new MyForm();
    instance.Show();
    ...
  }
  else {
    // MyForm has been already opened

    // Lets bring it to front, focus, restore it sizes (if minimized)
    if (instance.WindowState == FormWindowState.Minimized)
      instance.WindowState = FormWindowState.Normal; 

    instance.BringToFront();

    if (instance.CanFocus) 
      instance.Focus();
    ...
  }

关于c# - 以 MDI 形式多次防止同一个子窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17378807/

相关文章:

c# - 将服务引用添加到共享类的多个 WCF 服务

c# - 从 bat 文件运行 Java .jar 和 Windows .exe

.net - 使用自签名证书而不在证书存储中安装

.net - WinDbg/SOS : How to correlate managed threads from ! 带有 System.Threading.Thread 实例的线程命令

c# - 如何在我的 Visual Studio 2012 项目中引用 XML 文件作为项目代码中的数据源?

c# - 使用 C# 序列化时自定义显示元素的顺序

c# - 我们可以在.net窗口应用程序中运行javascript吗

c# - .Net 中(对称)加密的最佳实践?

c# - 比较两个 Color 对象

c# - 将 C# 变量添加到 javascript