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

首頁 > 學院 > 開發設計 > 正文

MDI-設置子窗體只能彈出一個--單例模式

2019-11-14 16:29:35
字體:
來源:轉載
供稿:網友

不足之處,歡迎指正!

什么是MDI..我表示不知道的呢。

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

新建一個WindowForm程序。得到一個窗體作為我們父窗體Parent。拖入一個menustrip空間。在新建一個窗體FrmChildren作為我們子窗體

代碼如下

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

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

 PRivate void tsmiOpenWindow_Click(object sender, EventArgs e)        {               FrmChildren child = FrmChildren.GetWindow();//調用方法            child.MdiParent = this;//設置child的父窗體為當前窗體            child.Show();                   }
GetWindow()這個方法在哪里呢。當然是在FrmChildren子窗體里面寫
  public partial class FrmChildren : Form    {        private FrmChildren() //由 public FrmChildren改為 private FrmChildren        {            InitializeComponent();        }        static FrmChildren fc = null; 創建一個靜態對象        public static FrmChildren GetWindow()        {   //當子窗體沒有開啟或者已經釋放。就可以創建新窗體            if (fc==null||fc.IsDisposed)            {                fc = new FrmChildren();            }            return fc;        }    }

在子窗體這樣一些,就是傳說中的單例模式

 

1.子窗體的私有構造函數

2.窗體的靜態對象

3. 返回子窗體的靜態方法,如果子窗體沒有開啟過就在在里面實例化子窗體

 

舉一反三:單例類也是這樣創建的。同時在 聲明子窗體(類)的靜態變量的時候也是可以直接實例的,在靜態方法中用get{}方法返回就好了,它是可以自己判斷的

 

第二種方法:

覺得很簡單的呢。直接在在menustrip打開子窗體的事件下面寫就ok了

private void tsmiOpenWindow_Click(object sender, EventArgs e)
{

#region 方法二application收集打開的窗體,用索引器來尋找,就是窗體的Name屬性
//方法二.如果沒有Name為FrmChildren的子船體,實例化創建。和之前的正規做法沒有什么差別,只是多了判斷。
if (Application.OpenForms["FrmChildren"] == null)
{
FrmChildren child = new FrmChildren();
child.MdiParent = this;
child.Show();
}
else//有Name為FrmChildren的子船體,就直接show()
{
Application.OpenForms["FrmChildren"].Show();
}

#endregion

}

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 克东县| 吴川市| 台山市| 祥云县| 商南县| 昆明市| 嫩江县| 兴隆县| 柳江县| 三河市| 五华县| 安福县| 英德市| 汶上县| 靖安县| 博客| 麻阳| 措勤县| 蒙阴县| 乃东县| 沂南县| 贵南县| 文登市| 丹凤县| 孝义市| 思茅市| 原平市| 莎车县| 乌兰察布市| 吉木萨尔县| 鱼台县| 紫云| 盈江县| 双牌县| 乐昌市| 峡江县| 乃东县| 于田县| 扎赉特旗| 德化县| 德钦县|