子窗體 禁止子窗體被重複開啟 (程式碼片段方法)
阿新 • • 發佈:2020-04-27
/// <summary> /// 禁止子窗體被重複開啟(開啟窗體為預設大小) /// </summary> /// <param name="formChild">例項子窗體</param> public void FrmDisposeNormal(Form formChild) { bool isOpened = false; //定義子窗體開啟標記,預設位false foreach (Form form inthis.MdiChildren) //迴圈MDI中的所有子窗體 { //銷燬其他不是要開啟的視窗例項 if (formChild.Name != form.Name) { form.Dispose(); } if (formChild.Name == form.Name) //若該窗體已被開啟 { formChild.Activate();//啟用該窗體 formChild.StartPosition = FormStartPosition.CenterParent; formChild.WindowState = FormWindowState.Normal; isOpened = true; //設定子窗體的開啟標記為true formChild.Dispose(); //銷燬formChild例項 break; } } if (!isOpened) //若該窗體未開啟,則顯示該子窗體 { formChild.MdiParent = this; formChild.Show(); } } public void FrmDispose(Form formChild) { bool isOpened = false; //定義子窗體開啟標記,預設位false foreach (Form form in this.MdiChildren) //迴圈MDI中的所有子窗體 { //銷燬其他不是要開啟的視窗例項 if (formChild.Name != form.Name) { form.Close(); } } if (!isOpened) //若該窗體未開啟,則顯示該子窗體 { formChild.Show(); } } /// <summary> /// 禁止子窗體被重複開啟(開啟窗體為最大化) /// </summary> /// <param name="formChild">例項子窗體</param> public void FrmDisposeMax(Form formChild) { bool isOpened = false; //定義子窗體開啟標記,預設位false foreach (Form form in this.MdiChildren) //迴圈MDI中的所有子窗體 { //銷燬其他不是要開啟的視窗例項 if (formChild.Name != form.Name) { // form.Dispose(); form.Close(); } if (formChild.Name == form.Name) //若該窗體已被開啟 { formChild.Activate(); //啟用該窗體 formChild.StartPosition = FormStartPosition.CenterParent; formChild.WindowState = FormWindowState.Maximized; isOpened = true; //設定子窗體的開啟標記為true formChild.Close(); //銷燬formChild例項 break; } } if (!isOpened) //若該窗體未開啟,則顯示該子窗體 { formChild.MdiParent = this; formChild.WindowState = FormWindowState.Maximized; formChild.Show(); } }