国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

C#設(shè)置MDI子窗體只能彈出一個的方法

2020-01-24 02:31:11
字體:
供稿:網(wǎng)友

Windows程序設(shè)計中的MDI(Multiple Document Interface)官方解釋就是所謂的多文檔界面,與此對應(yīng)就有單文檔界面 (SDI), 它是微軟公司從Windows 2.0下的Microsoft Excel電子表格程序開始引入的,Excel電子表格用戶有時需要同時操作多份表格,MDI正好為這種操作多表格提供了很大的方便,于是就產(chǎn)生了MDI程序。

新建一個WindowForm程序。得到一個窗體作為我們父窗體Parent。拖入一個menustrip空間。在新建一個窗體FrmChildren作為我們子窗體,界面如下圖所示:

其代碼如下所示:

public Form1(){  InitializeComponent();  //將Form1設(shè)置為MDI窗體,當(dāng)然在Form1的IsMdiContainer屬性頁可以設(shè)置  this.IsMdiContainer = true;}

在menustrip打開子窗體的事件代碼如下:

private void tsmiOpenWindow_Click(object sender, EventArgs e){    FrmChildren child = FrmChildren.GetWindow();//調(diào)用方法  child.MdiParent = this;//設(shè)置child的父窗體為當(dāng)前窗體  child.Show();  }

GetWindow()這個方法在哪里呢。當(dāng)然是在FrmChildren子窗體里面寫

 public partial class FrmChildren : Form  {    private FrmChildren() //由 public FrmChildren改為 private FrmChildren    {      InitializeComponent();    }    static FrmChildren fc = null; 創(chuàng)建一個靜態(tài)對象    public static FrmChildren GetWindow()    {  //當(dāng)子窗體沒有開啟或者已經(jīng)釋放。就可以創(chuàng)建新窗體      if (fc==null||fc.IsDisposed)      {        fc = new FrmChildren();      }      return fc;    }  }

第二種方法:

這種方法個人覺得很簡單。直接在在menustrip打開子窗體的事件下面寫就ok了

private void tsmiOpenWindow_Click(object sender, EventArgs e){ #region 方法二Application收集打開的窗體,用索引器來尋找,就是窗體的Name屬性//方法二.如果沒有Name為FrmChildren的子船體,實例化創(chuàng)建。和之前的正規(guī)做法沒有什么差別,只是多了判斷。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)試運行一下本文所述示例,相信會有不小的收獲。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 沈阳市| 新邵县| 竹北市| 方城县| 吉林省| 饶河县| 宜兰市| 阳谷县| 织金县| 建水县| 巴林右旗| 平乐县| 麟游县| 巨鹿县| 玉山县| 门源| 上思县| 林甸县| 济阳县| 开远市| 瑞金市| 三都| 河曲县| 文成县| 海南省| 石首市| 金平| 洱源县| 淳化县| 榆林市| 香格里拉县| 新邵县| 沁源县| 马山县| 榕江县| 民县| 普兰店市| 江山市| 孝义市| 通榆县| 柳州市|