专业编程基础技术教程

网站首页 > 基础教程 正文

C#-MDI窗体与单例模式 129 mdi窗体如何调用子窗体函数

ccvgpt 2024-12-28 11:46:53 基础教程 2 ℃

MDI窗体通俗点说就是有两个窗体,通过属性设置其中一个窗体会成为一个主窗体(父窗体),此窗体将会成为包含另一个窗体的容器,而另一个窗体就是子窗体,此窗体只能在主窗体区域内移动,改变大小;当子窗体最大化时,它将占满MDI主窗体的全部区域,当MDI主窗体最小化的时候所有子窗口随之最小化;设置属性后运行的效果如下

首先拖入toolStrip(工具栏)控件,此控件用于生成上图中的"打开子窗体"按钮,设置过程如下图所示

C#-MDI窗体与单例模式 129 mdi窗体如何调用子窗体函数

主窗体Name值为FMain,子窗体Name值为FSon,工具栏控件的"打开子窗体"Name值为tsbOpen,将FMain设置为主窗体此处使用的是属性窗口,也可以代码设置上图右边箭头指向的属性值为true即可

通过上述设置MDI窗体已创建好运行后单击"打开子窗体",每单击一次就会出现一个子窗体,实际项目中一般都是主窗体中只出现一个子窗体,一般多使用单例模式实现主窗体中只能出现一个子窗体的方法

单例模式:简单来说就是不管该类new多少个对象,只返回该类new的第一个对象;此例题中只返回同一个FSon的对象,通过这种方式不管单击多少次"打开子窗体"主窗体中只有一个子窗体

实现单例模式只需3步:1)构造方法私有2)声明一个该类类型的私有的静态的字段3)提供一个公共的静态的方法用于返回该类类型的对象,以供外界访问使用

如果是普通类通过上述代码可以实现类的单例模式,在窗体中必须多加一项,不然运行时子窗体关闭后,再次通过单击"打开子窗体"按钮时会报如下异常

其意思是说:对象f还在,所以直接返回f对象,但是关闭子窗体时该窗体被标记为已释放,所以再次单击时就不能显示已被释放的窗体,因此报出异常;应修改如下所示

Tags:

最近发表
标签列表