C#单例模式的使用
2016-05-08 21:46
489 查看
单例模式是在这几个模式中相对比较简单的 模式吧,但是还是有些问题是需要注意的
1.打开正在上机的窗体会发现,正在上机的菜单栏出现在了父窗体上
设置一下菜单栏的属性:AllowMerge 的属性为false即可
2.当我们在父窗体上加载图片的时候会发现子窗体藏在图片的后面,在父窗体上画上lable框的时候,lable也是飘在父
窗体上面的。这要怎么解决呢? 我们需要在父窗体上加一个panel控件,然后在panel控件中画图片或是lable框。
让窗体最前显示:
在主窗体中的子窗体的触发事件中写
在子窗体中写单例模式(参考的设计模式课本)
1.打开正在上机的窗体会发现,正在上机的菜单栏出现在了父窗体上
设置一下菜单栏的属性:AllowMerge 的属性为false即可
2.当我们在父窗体上加载图片的时候会发现子窗体藏在图片的后面,在父窗体上画上lable框的时候,lable也是飘在父
窗体上面的。这要怎么解决呢? 我们需要在父窗体上加一个panel控件,然后在panel控件中画图片或是lable框。
让窗体最前显示:
<span style="font-size:18px;"> [DllImport("user32")] public static extern int SetParent(int hWndChild, int hWndNewParent); </span>
在主窗体中的子窗体的触发事件中写
<span style="font-size:18px;"> 子窗体 ad = new frmInquireLine(); SetParent((int)ad.Handle, (int)this.Handle); ad.MdiParent = this; 子窗体.GetInstance().Show();</span>
在子窗体中写单例模式(参考的设计模式课本)
<span style="font-size:18px;"> public static frmInquiryMoney frm = null; public frmInquiryMoney() { InitializeComponent(); } public static frmInquiryMoney GetInstance() { if (frm == null || frm.IsDisposed) { frm = new frmInquiryMoney(); frm.MdiParent = frmMain.ActiveForm; } return frm; } </span>