• Winform 使用DotNetBar 根据菜单加载TabControl


    winform 如何使用TabControl 控件来做winform界面框架?

    这样的效果:

    首先菜单的窗口展示的承载器为TabControl 控件,这个控件本身包含多页面预览和页面初始化。

    如图所示:要实现如下功能。

     1. 安装DevComponents.DotNetBar 组件 我这里使用的是:10.9.0.4版本 这个可随意,只要不是特别老的版本就可以了。

     2. 添加引用 DevComponents.DotNetBar2   如图:

      

    3. 设计Tablcontrol的展示样式 默认即可。

    4. 将要打开窗口创建 对象 放入TablControl控件的ITem中。

    5. 如何判断已经打开的窗口显示?

        需要循环tableContorl的tab 集合 将已存在的页面设置显示,选中。

    直接上源码:

       #region 控制添加窗口
            private int index = 0;
            private void MenuItem(object sender, EventArgs e)
            {
                string menuItemTxt = ((DevComponents.DotNetBar.BaseItem)(sender)).Text;
                Office2007Form f = new Office2007Form();
                switch (menuItemTxt)
                {
                    case "File_ReadWrite":
                        f = new Frm.UserSet();
                        break;
                    case "DataGridExample":
                        f = new Frm.UserSet();
                        break;
                    case "1":
                        break;
                    case "2":
                        break;
                    case "3":
                        break;
                    case "4":
                        break;
                    case "5":
                        break;
                    default:
                        break;
                }
                //for (int i = 0; i < this.tabControl1.Tabs.Count; i++)
                //{//已经打开了 就默认选中即可了
                //    if (tabControl1.Tabs[i].Text == menuItemTxt)
                //    {
                //        this.tabControl1.SelectedTab = tabControl1.Tabs[i];
                //        return;
                //    }
                //}
                //f.TopLevel = false;
                //f.FormBorderStyle = FormBorderStyle.None;
                //f.WindowState = FormWindowState.Maximized;
                //TabPage Page = new TabPage();
                //Page.Name = "Page" + index.ToString();
                //Page.Text = menuItemTxt.ToString();
                //Page.TabIndex = index;
                ////    tabControl1.TabPages[0].Controls.Add(f);
                //Page.Controls.Add(f);
                //this.tabControl1.Controls.Add(Page);
    
                //f.TopLevel = false;
                //f.FormBorderStyle = FormBorderStyle.None;
                //f.WindowState = FormWindowState.Maximized;
    
                //TabItem it = new TabItem();
    
                //it.Text = menuItemTxt.ToString();
                //it.Name = "Page" + index.ToString();
    
                //TabPage p = new TabPage();
    
                //p.Container.Add();
                //this.tabControl1.Tabs.Add(it);
    
    
                //#region 三种设置某个选项卡为当前选项卡的方法
                ////this.tabControl1.SelectedIndex = index;       
                ////this.tabControl1.SelectTab("Page" + index.ToString()); 
                //#endregion
                //this.tabControl1.SelectedTabIndex = index;
                //f.Show();
                //index++;
    
                AddForm(f);
    
    
            }
            private void AddForm(DevComponents.DotNetBar.Office2007Form frm)
            {
                this.tabControl1.Visible = true;
                if (!IsOpenTab(frm.Text))
                {
                    DevComponents.DotNetBar.TabItem tabItem = tabControl1.CreateTab(frm.Text);
                    DevComponents.DotNetBar.TabControlPanel tcp = new DevComponents.DotNetBar.TabControlPanel();
                    tabItem.AttachedControl = tcp;
                    tcp.TabItem = tabItem;
                    tcp.Dock = DockStyle.Fill;
                    tcp.Name = frm.Name + "Tab"; frm.TopLevel = false;
                    frm.Dock = DockStyle.Fill;
                    frm.FormBorderStyle = FormBorderStyle.None;
                    frm.Show();
                    tcp.Controls.Add(frm); tabControl1.Controls.Add(tcp); tabControl1.SelectedTab = tabItem;
                }
            }
    
            /// <summary>      
            /// 检查是否已打开某个子窗体       
            ///</summary>       
            /// <param name="tabName"></param>       
            /// <returns></returns>    
            private bool IsOpenTab(string tabName)
            {
                bool isOpened = false;
                foreach (DevComponents.DotNetBar.TabItem tab in tabControl1.Tabs)
                {
                    if (tab.Text.Trim() == tabName.Trim())
                    {
                        isOpened = true;
    
                        tabControl1.SelectedTab = tab;
                        break;
                    }
                }
                return isOpened;
            }
            #endregion
    

      

  • 相关阅读:
    网络编程实验一 win socket基础 获取服务器时间
    ASP.NET Core入门
    vue-element-template 获取后端路由表动态生成权限
    vue-admin-template只有一个子菜单时父级菜单不显示问题
    vue-element-template 本地使用proxy解决跨域问题
    已成功与服务器建立连接,但是在登录过程中发生错误。 (provider: SSL Provider, error: 0
    系统还未初始化,还不能审核期间以后的单据
    金蝶初始化问题
    jqueryMobile 动态添加元素,展示刷新视图方法
    链接数据库 远程事务的处理方式
  • 原文地址:https://www.cnblogs.com/hcyblogs/p/6758381.html
Copyright © 2020-2023  润新知