类似excel表格中各个表单sheet的切换效果,使用tabcontrol控件实现类似的功能。效果如下:
过程涉及父窗体MDIParent1、子窗体main、自定义基础功能类MdiChildBase。
基础功能类MdiChildBase继承自Form创建,定义了一个委托SetTabControlDelegate,委托的实例SetTabI用于指定FormClosing和Shown方法中调用的方法(函数),添加了窗口的FormClosing和Shown处理方法,窗口再打开和关闭的时候会被调用,即后面继承MdiChildBase创建的子窗体会在窗口关闭和显示的时候执行相应方法。可见,委托的实例SetTabI起到重要的连接作用。
子窗体main是自己创建的窗体,继承自类MdiChildBase,其他用于子窗体的Form也需要继承类MdiChildBase:“public partial class Main : MdiChildBase”,在窗口的关闭和显示过程中会执行MdiChildBase中注册的FormClosing和Shown方法,调用父窗体MDIParent1的SetTabControl方法添加和移除对应窗口的tab标签;
父窗体MDIParent1为MDI父窗体,包含一个用户显示子窗体列表的tabcontrol控件,定义了SetTabControl方法添加和移除对应窗口的tab标签;
主要代码
父窗体MDIParent1:
MDIParent父窗体设置为MDI容器窗体:this.IsMdiContainer = true;
MDIParent父窗体的Designer中ta