C#設(shè)置MDI子窗體只能彈出一個(gè)的方法
Windows程序設(shè)計(jì)中的MDI(Multiple Document Interface)官方解釋就是所謂的多文檔界面,與此對(duì)應(yīng)就有單文檔界面 (SDI), 它是微軟公司從Windows 2.0下的Microsoft Excel電子表格程序開(kāi)始引入的,Excel電子表格用戶有時(shí)需要同時(shí)操作多份表格,MDI正好為這種操作多表格提供了很大的方便,于是就產(chǎn)生了MDI程序。
新建一個(gè)WindowForm程序。得到一個(gè)窗體作為我們父窗體Parent。拖入一個(gè)menustrip空間。在新建一個(gè)窗體FrmChildren作為我們子窗體,界面如下圖所示:
其代碼如下所示:
public Form1() { InitializeComponent(); //將Form1設(shè)置為MDI窗體,當(dāng)然在Form1的IsMdiContainer屬性頁(yè)可以設(shè)置 this.IsMdiContainer = true; }
在menustrip打開(kāi)子窗體的事件代碼如下:
private void tsmiOpenWindow_Click(object sender, EventArgs e) { FrmChildren child = FrmChildren.GetWindow();//調(diào)用方法 child.MdiParent = this;//設(shè)置child的父窗體為當(dāng)前窗體 child.Show(); }
GetWindow()這個(gè)方法在哪里呢。當(dāng)然是在FrmChildren子窗體里面寫(xiě)
public partial class FrmChildren : Form { private FrmChildren() //由 public FrmChildren改為 private FrmChildren { InitializeComponent(); } static FrmChildren fc = null; 創(chuàng)建一個(gè)靜態(tài)對(duì)象 public static FrmChildren GetWindow() { //當(dāng)子窗體沒(méi)有開(kāi)啟或者已經(jīng)釋放。就可以創(chuàng)建新窗體 if (fc==null||fc.IsDisposed) { fc = new FrmChildren(); } return fc; } }
第二種方法:
這種方法個(gè)人覺(jué)得很簡(jiǎn)單。直接在在menustrip打開(kāi)子窗體的事件下面寫(xiě)就ok了
private void tsmiOpenWindow_Click(object sender, EventArgs e) { #region 方法二Application收集打開(kāi)的窗體,用索引器來(lái)尋找,就是窗體的Name屬性 //方法二.如果沒(méi)有Name為FrmChildren的子船體,實(shí)例化創(chuàng)建。和之前的正規(guī)做法沒(méi)有什么差別,只是多了判斷。 if (Application.OpenForms["FrmChildren"] == null) { FrmChildren child = new FrmChildren(); child.MdiParent = this; child.Show(); } else//有Name為FrmChildren的子船體,就直接show() { Application.OpenForms["FrmChildren"].Show(); } #endregion }
感興趣的朋友可以調(diào)試運(yùn)行一下本文所述示例,相信會(huì)有不小的收獲。
相關(guān)文章
使用windows控制臺(tái)調(diào)試服務(wù)的方法
這篇文章主要介紹了使用windows控制臺(tái)調(diào)試服務(wù)的方法,需要的朋友可以參考下2014-02-02C#程序中使用LINQ to XML來(lái)查詢XML格式數(shù)據(jù)的實(shí)例
這篇文章主要介紹了C#程序中使用LINQ to XML來(lái)查詢XML格式數(shù)據(jù)的實(shí)例,LINQ to XML是.NET框架中集成的接口,可以將XML數(shù)據(jù)放到內(nèi)存中進(jìn)行處理,需要的朋友可以參考下2016-03-03C#實(shí)現(xiàn)系統(tǒng)桌面右下角彈框
這篇文章主要為大家詳細(xì)介紹了C#如何實(shí)現(xiàn)系統(tǒng)桌面右下角彈框,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C#有一定的幫助,感興趣的小伙伴可以跟隨小編一起了解一下2023-01-01DevExpress實(shí)現(xiàn)自定義GridControl中按鈕文字內(nèi)容的方法
這篇文章主要介紹了DevExpress實(shí)現(xiàn)自定義GridControl中按鈕文字內(nèi)容的方法,需要的朋友可以參考下2014-08-08C#接口INotifyPropertyChanged使用方法
這篇文章介紹了C#接口INotifyPropertyChanged的使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-01-01