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


    最近在做一个条码系统的项目,第一次用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         }

    三、调用实现

  • 相关阅读:
    关于匹配的一些问题
    Codeforces Round #396 (Div. 2) A,B,C,D,E
    Codeforces Round #394 (Div. 2) A,B,C,D,E
    HDU 1848 SG函数博弈
    HDU 1536 S-Nim SG博弈
    HDU 2509 Be the Winner nim博弈变形
    HDU 1907 John nim博弈变形
    Codeforces Round #222 (Div. 1) D. Developing Game 线段树有效区间合并
    BZOJ 1031: [JSOI2007]字符加密Cipher 后缀数组
    HDU 5769 Substring 后缀数组
  • 原文地址:https://www.cnblogs.com/vice/p/6979508.html
Copyright © 2020-2023  润新知