【问题标题】:Prevent same child window multiple times in MDI form在 MDI 表单中多次防止同一个子窗口
【发布时间】:2015-01-03 15:25:08
【问题描述】:

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

【问题讨论】:

    标签: c# .net


    【解决方案1】:

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

      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();
        ...
      }
    

    【讨论】:

      【解决方案2】:

      也许这可以帮助你:

      public static bool formOpened = false;   // it is global boolean
      Form2 instance;
      

      当您打开表单时:

      if(formOpened == false)
      {
         instance = new Form2();
         instance.Show();
         formOpened = true;
      }
      else
      {
          instance.Focus();
      }
      

      还有一件事是你的Form2关闭后,你应该将formOpened的值设置为false;

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-12-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-06
        • 1970-01-01
        • 2020-05-31
        相关资源
        最近更新 更多