在MDI形式prevent相同的子窗口多次形式、窗口、MDI、prevent

2023-09-03 13:44:18 作者:释然。

我工作的C#桌面应用程序,在录入的形式相同的子窗口,当你点击菜单使用打开,而该窗口的第一个实例是present。 我怎样才能prevent的子窗口中的MDI窗体这些多个实例?

I am working on c# desktop application, In MDI form the same child window getting opened when you click on menu, while first instance of that window is present. How can I prevent these multiple instances of child windows in MDI form?

推荐答案

您可以检查的形式已经被打开了:

You can check if the form has been opened already:

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