C# winform窗体应用程序多文档界面设计 VS2012+devExpress Ribbon布局 多文档界面

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_25473787/article/details/81208894

一.背景

最近有个项目用VS2012开发一个Winform的系统,首先我面临的问题是如何设计一个比较好的系统界面。
众所周知,VS2012本身提供了一些控件,虽然已经便于我们开发应用,但是,这些控件来说相对来说比较简单,当系统的界面比较复杂的时候,就不得不去依赖第三方的一些控件。
本博文就是结合本人的一些开发的心得体会,介绍一下使用deExpress控件设计一个系统界面的框架,希望对大家有所启发。

二.开发工具及相关

1.Visual Studio 2012
2. devExpress 这个是破解版,破解步骤网上很多,在此就不详细介绍 百度云链接

三.界面效果示意图

这里写图片描述
这里写图片描述
这里写图片描述

四.具体实施步骤

  1. 新建DevExpress项目
    打开VS2012,点击文件选择新建项目,选中C#作为开发语言,选中DevExpress模板,如下图所示,点击确认
    新建项目
    选择Ribbon布局
    创建成功示意图如下,其中RibbonPage可以理解为一级菜单,RibbonPageGroup可以理解为在上一级RibbonPage下面的二级菜单。(此处为个人理解,有表述欠妥的地方,大家见谅!)
    例如:某个项目中用户信息管理的功能模块,其中此功能模块包含用户基本信息维护,权限设置,用户注销等子模块,那么可以将RibbonPage理解为用户信息这一功能模块的操作导航,其中的RibbonPageGroup里包含用户基本信息维护,权限设置,用户注销等功能子模块。
    这里写图片描述
  2. 设置菜单名称,格式
    新建完项目之后,各级菜单进行对应的设置。此处以用户信息功能模块为例,一级菜单名为:用户信息管理,一级菜单之下包含用户基本信息维护,权限设置,用户注销子模块二级菜单。
    这里写图片描述
    选中RibbonGroupPage,点击添加AddButtonItem,连续操作三次
    这里写图片描述
    对于每个ButtonItem,根据各自需求设置其Caption,Ribbon Style,以及Glyph的属性值,如下图:
    这里写图片描述
    设置完毕结果如图:
    这里写图片描述
  3. 添加tabControl控件
    实现点击对应的功能按钮,显示相应的界面,实现方法有很多,此处使用tabControl控件结合后台代码的方式,将各个winform页面添加到对应的tabPage之中,最后添加到tabControl。此处对于那些不了解tabControl控件的人来说比较难于理解。其实,可以将tabControl看做父容器,它有个里面有个TabPages属性,可以添加各个tabPage作为多文档页面,各个功能模块对应的winform可以代码实现填充到tabPage之中。
    这里写图片描述
    默认的TabControl中有两个TabPage,此处不需要可以删除,删除后如下图:
    这里写图片描述
  4. 新建各个子功能模块winform
    新建用户基本信息维护,权限设置,用户注销等功能子模块对应的winform,通过后台代码的形式添加到TabPage中,在添加到TabControl中,实现多文档界面效果。以用户基本信息维护的winform为例,介绍实现过程,新建名为UserInfoMangement窗体,设置窗体的text属性值,如下图;
    这里写图片描述
  5. 各个ButtonItem按钮添加点击事件,点击相应的按钮,tabControl容器,加载对应的Winform,以用户基本信息维护的winform为例。
    代码如下:
         public TabPage tabUserInfo = null;//基本信息维护winfrom对应的tabPage
         public bool tabUserInfo= false;//基本信息维护winfrom对应的tabPage是否已经加载到tabControl容器中,防止重复加载到tabControl中
        //基本信息维护按钮点击事件
        private void barButtonItem1_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            if (tabUserInfoIsLoad == false)//如果尚未加载到tabControl中
            {
                tabUserInfo = new TabPage("基本信息维护");//tabPage的中文标题
                tabUserInfo.Name = "userInfoManagement";
                tabControl1.Controls.Add(tabUserInfo);//tabUserInfo添加到tabControl容器之中
                UserInfoManagemenForm userInfoManagementForm = new UserInfoManagemenForm();//创建基本信息维护winform的对象
                //以下是设置winform的显示格式,属性等
                userInfoManagementForm.TopLevel = false;
                userInfoManagementForm.BackColor = Color.White;
                userInfoManagementForm.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
                userInfoManagementForm.FormBorderStyle = FormBorderStyle.None;
                userInfoManagementForm.Dock = DockStyle.Fill;
                //以上是设置winform的显示格式,属性等
                userInfoManagementForm.Show();//显示窗体
                tabUserInfo.Controls.Add(userInfoManagementForm);//将基本信息维护winform的窗体加载到到对应的Tabpage中
                this.tabControl1.SelectedTab = tabUserInfo;//设置点击的焦点,点击相应的按钮,tabControl停留在对应的tabPage上
                tabUserInfoIsLoad = true;
            }
            else
            {
                this.tabControl1.SelectedTab = tabUserInfo;//设置点击的焦点,点击相应的按钮,tabControl停留在对应的tabPage上
            }
        }

效果如下图所示:
这里写图片描述

其它界面代码类似,代码如下:

        public TabPage tabRootManagement = null;//权限管理winfrom对应的tabPage
        public bool tabRootManagementIsLoad = false;//权限管理winfrom对应的tabPage是否已经加载到tabControl容器中,防止重复加载到tabControl中
        //权限管理点击事件
        private void barButtonItem2_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            if (tabRootManagementIsLoad == false)//如果尚未加载到tabControl中
            {
                tabRootManagement = new TabPage("权限管理");//tabPage的中文标题
                tabUserInfo.Name = "rootManagement";
                tabControl1.Controls.Add(tabRootManagement);//tabRootManagement添加到tabControl容器之中
                RootMangementForm rootManagementForm = new RootMangementForm(); //创建权限管理winform的对象
                //以下是设置winform的显示格式,属性等
                rootManagementForm.TopLevel = false;
                rootManagementForm.BackColor = Color.White;
                rootManagementForm.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
                rootManagementForm.FormBorderStyle = FormBorderStyle.None;
                rootManagementForm.Dock = DockStyle.Fill;
                //以上是设置winform的显示格式,属性等
                rootManagementForm.Show();//显示窗体
                tabRootManagement.Controls.Add(rootManagementForm);//将权限管理winform的窗体加载到到对应的Tabpage中
                this.tabControl1.SelectedTab = tabRootManagement;//设置点击的焦点,点击相应的按钮,tabControl停留在对应的tabPage上
                tabRootManagementIsLoad = true;
            }
            else
            {
                this.tabControl1.SelectedTab = tabRootManagement;//设置点击的焦点,点击相应的按钮,tabControl停留在对应的tabPage上
            }
        }
        public TabPage tabLogoutUser = null;//注销用户winfrom对应的tabPage
        public bool tabLogoutUserIsLoad = false;//注销用户winfrom对应的tabPage是否已经加载到tabControl容器中,防止重复加载到tabControl中
        //注销用户点击事件
        private void barButtonItem3_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            if (tabLogoutUserIsLoad == false)
            {
                tabLogoutUser = new TabPage("注销用户");//tabPage的中文标题
                tabUserInfo.Name = "logoutUser";
                tabControl1.Controls.Add(tabLogoutUser);//tabLogoutUser添加到tabControl容器之中
                UserLogOut userLogOut = new UserLogOut();
                //以下是设置winform的显示格式,属性等
                userLogOut.TopLevel = false;
                userLogOut.BackColor = Color.White;
                userLogOut.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
                userLogOut.FormBorderStyle = FormBorderStyle.None;
                userLogOut.Dock = DockStyle.Fill;
                //以上是设置winform的显示格式,属性等
                userLogOut.Show();//显示窗体
                tabLogoutUser.Controls.Add(userLogOut);//将注销用户winform的窗体加载到到对应的Tabpage中
                this.tabControl1.SelectedTab = tabLogoutUser;//设置点击的焦点,点击相应的按钮,tabControl停留在对应的tabPage上
                tabLogoutUserIsLoad = true;
            }
            else
            {
                this.tabControl1.SelectedTab = tabLogoutUser;//设置点击的焦点,点击相应的按钮,tabControl停留在对应的tabPage上
            }
        }

以上就完成了布局的全部内容,如何退出各个界面,下篇博客会介绍 ^^ ^^

展开阅读全文

没有更多推荐了,返回首页