5
我正在研究c#桌面應用程序,在MDI窗體中,當您單擊菜單時打開相同的子窗口,同時存在該窗口的第一個實例。 如何防止MDI窗體中的這些多個子窗口實例?以MDI形式多次預防相同的子窗口
我正在研究c#桌面應用程序,在MDI窗體中,當您單擊菜單時打開相同的子窗口,同時存在該窗口的第一個實例。 如何防止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();
...
}
也許這可以幫助你:
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;
謝謝德米特里, – n8coder