您的位置:首页 > 其它

DotNetBar控件,superTabControl多文档界面(MDI)的风格、多Tab的创建方法

2017-06-10 18:23 2221 查看
最近在做一个条码系统的项目,第一次用dotnetbar控件,,查找资料时看到伍老师一篇文章(链接),但是没有关于加载tab窗口的方法,自己摸索做了一个此类风格出来,并写了一个通用方法,供大家参考。

风格如下:



一、使用superTabControl控件,设置其属性,第一个属性为显示关闭按钮,第二个属性设置铺满父控件(如果你在使用ribbon风格的菜单栏一定不要忘记设置,否则ribbon添加自定义按钮或最小化时可能会被遮挡或留白)



二、在开始添加tab时,我是手动添加tab到superTabControl中,以为点击tab关闭时只是将此tab隐藏,打开时再显示就行了。但实际不可行,因为关闭后此tab实际上已经被释放掉了,无法恢复到原状态。这里我使用的方法是讲功能界面做成单独子窗体,在点击某功能时创建Tab,然后将子窗体加载到此Tab中。

  1、添加一个window,放好基本控件,设置窗体FormBorderStyle为none隐藏边框和窗体标题,



2、关键方法:设置Tab显示。

第一个参数为tab名称,对应功能菜单名称,

第二个参数为子window的控件Name。

1         private void SetTabShow(string tabName,string sfrmName) {
2             bool isOpen = false;
3             foreach (SuperTabItem item in superTabCtrMain.Tabs)
4             {
5                 //已打开
6                 if (item.Name == tabName) {
7                     superTabCtrMain.SelectedTab = item;
8                     isOpen = true;
9                     break;
10                 }
11             }
12             if (!isOpen) {
13                 //反射取得子窗体对象。
14                 object obj = Assembly.GetExecutingAssembly().CreateInstance("BarCodeSys.subWindows." + sfrmName, false);
15                 //需要强转
16                 Form form = (Form)obj;
17                 //设置该子窗体不为顶级窗体,否则不能加入到别的控件中
18                 form.TopLevel = false;
19                 form.Visible = true;
20                 //布满父控件
21                 form.Dock = DockStyle.Fill;
22                 //创建一个tab
23                 SuperTabItem item = superTabCtrMain.CreateTab(tabName);
24                 //设置显示名和控件名
25                 item.Text = tabName;
26                 item.Name = tabName;
27                 //将子窗体添加到Tab中
28                 item.AttachedControl.Controls.Add(form);
29                 //选择该子窗体。
30                 superTabCtrMain.SelectedTab = item;
31             }
32         }


三、调用实现

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: