WinForm界面开发之“OutLookBar”工具条

在很多软件界面中,一个好的界面、方便的导航除了为软件增色不少外,也提高了用户体验,促进软件的良性发展,因为我们的软件一般需要有菜单、工具条、状态条等这些基本的东西,但是工具条本身应该是一些常用的快捷键,内容不能放置太多,否则会容易给客户凌乱的感觉。菜单条则可以分类,但是好像每次去点击,一步步深入,则显得比较麻烦。本篇我介绍一下一个很好的导航条OutlookBar控件。

在我的2个版本的送水软件中,都用到了OutLookBar的工具条,使用的界面效果如下所示。

                   

左边的工具条它们都是同一个控件来的,控件提供了一种类似Outlook方式的工具条,用来切换各种业务窗口,用上这个控件,肯定为您的程序增色不少。这个控件结合上面介绍的布局控件"WeifenLuo.WinFormsUI.Docking"(具体见文章WinForm界面开发之布局控件"WeifenLuo.WinFormsUI.Docking"的使用),那么效果会更好。下面介绍下如何在代码中使用这个Outlookbar工具控件。

 1、首先创建一个窗体,用来放置该控件,由于该控件不是一个可视化的控件,因此需要做一些特别的处理,如添加一个ImageList控件,并把OutlookBar控件中用到的图标加载进来,记得选择一些好看的图片哦。

2、在MainToolWindow窗体的构造函数或者Load事件中添加OutlookBar的初始化代码和设置代码,如下所示。

       private OutlookBar outlookBar1 = null;

        public MainToolWindow()
        {
            InitializeComponent();

            InitializeOutlookbar();            
        }

        private void InitializeOutlookbar()
        {
            outlookBar1 = new OutlookBar();

            #region 销售管理
              OutlookBarBand outlookShortcutsBand = new OutlookBarBand("销售管理");
            outlookShortcutsBand.SmallImageList = this.imageList;
            outlookShortcutsBand.LargeImageList = this.imageList;
            outlookShortcutsBand.Items.Add(new OutlookBarItem("订单管理", 0));
            outlookShortcutsBand.Items.Add(new OutlookBarItem("客户管理", 1));
            outlookShortcutsBand.Items.Add(new OutlookBarItem("水票管理", 2));
            outlookShortcutsBand.Items.Add(new OutlookBarItem("套餐管理", 3));
            outlookShortcutsBand.Items.Add(new OutlookBarItem("今日盘点", 5));
            outlookShortcutsBand.Items.Add(new OutlookBarItem("来电记录", 6));
            outlookShortcutsBand.Items.Add(new OutlookBarItem("送货记录", 7));
            outlookShortcutsBand.Background = SystemColors.AppWorkspace;
            outlookShortcutsBand.TextColor = Color.White;
            outlookBar1.Bands.Add(outlookShortcutsBand);
            
            #endregion

            #region 产品库存管理
              OutlookBarBand mystorageBand = new OutlookBarBand("产品库存管理");
            mystorageBand.SmallImageList = this.imageList;
            mystorageBand.LargeImageList = this.imageList;
            mystorageBand.Items.Add(new OutlookBarItem("产品管理", 2));
            mystorageBand.Items.Add(new OutlookBarItem("库存管理", 3));
            mystorageBand.Background = SystemColors.AppWorkspace;
            mystorageBand.TextColor = Color.White;
            outlookBar1.Bands.Add(mystorageBand); 
            #endregion

            .
            
            outlookBar1.Dock = DockStyle.Fill;
            outlookBar1.SetCurrentBand(0);
            outlookBar1.ItemClicked += new OutlookBarItemClickedHandler(OnOutlookBarItemClicked);
            outlookBar1.ItemDropped += new OutlookBarItemDroppedHandler(OnOutlookBarItemDropped);

            //outlookBar1.FlatArrowButtons = true;
            this.panel1.Controls.AddRange(new Control[] { outlookBar1 });
        }

        private void OnOutlookBarItemClicked(OutlookBarBand band, OutlookBarItem item)
        {
            switch (item.Text)
            {
                #region 销售管理

                  case "订单管理":
                    Portal.gc.MainDialog.ShowContent("订单管理", typeof(FrmOrder));
                    break;
                case "客户管理":
                    Portal.gc.MainDialog.ShowContent("客户管理", typeof(FrmCustomer));
                    break;
                case "水票管理":
                    Portal.gc.MainDialog.ShowContent("水票管理", typeof(FrmTicketHistory));
                    break;
                case "套餐管理":
                    FrmYouhui dlg = new FrmYouhui();
                    dlg.ShowDialog();
                    break;
                case "来电记录":
                    Portal.gc.MainDialog.ShowContent("来电记录", typeof(FrmComingCall));
                    break;
                case "送货记录":
                    Portal.gc.MainDialog.ShowContent("送货记录", typeof(FrmDeliving));
                    break;

                #endregion

                #region 产品库存管理
                  case "产品管理":
                    Portal.gc.MainDialog.ShowContent("产品管理", typeof(FrmProduct));
                    break;
                case "库存管理":
                     Portal.gc.MainDialog.ShowContent("库存管理", typeof(FrmStock));
                    break; 
                #endregion

                ..

                default:
                    break;
            }
        }

        private void OnOutlookBarItemDropped(OutlookBarBand band, OutlookBarItem item)
        {
            //            string message = "Item : " + item.Text + " was dropped";
            //            MessageBox.Show(message);            
        }

在代码中注意绑定相关项目的图标序号,否则如果序号不正确,可能会出错的,其实整个控件就是提供展示一些图标,并用同一的事件对鼠标的事件进行处理,用户根据OutlookBarItem的文本内容来判断处理,虽然模式有点落后,不过个人感觉控件还是非常好用,方便。

最后呈上相关的控件文件:http://files.cnblogs.com/wuhuacong/UtilityLibrary.rar

本文转自博客园伍华聪的博客,原文链接:WinForm界面开发之“OutLookBar”工具条,如需转载请自行联系原博主。

时间: 2024-07-29 11:24:05

WinForm界面开发之“OutLookBar”工具条的相关文章

Winform开发中另一种样式的OutLookBar工具条

很早的时候,曾经写了一篇随笔<WinForm界面开发之"OutLookBar"工具条>介绍了OutLookBar样式的工具条,得到很多同行的热烈反馈,我个人也比较喜欢这样的工具条布局,因此我很多共享软件中,都经常看到这种OutLookBar的工具条,这种工具条提供了一种较好的界面布局,方便对工具的分类和排列.如我的多篇随笔<从开发的软件<备件仓库管理系统>总结的一些经验>.<WinForm界面开发之酒店管理系统--开篇>.<Winf

WinForm界面开发之布局控件&quot;WeifenLuo.WinFormsUI.Docking&quot;的使用

本篇介绍Winform程序开发中的布局界面的设计,介绍如何在我的共享软件中使用布局控件"WeifenLuo.WinFormsUI.Docking". 布局控件"WeifenLuo.WinFormsUI.Docking"是一个非常棒的开源控件,用过的人都深有体会,该控件之强大.美观.不亚于商业控件.而且控件使用也是比较简单的.先看看控件使用的程序界面展示效果. 配电网络可视化管理系统的界面截图: 深田之星送水管理系统网络版的界面截图: 我在几个共享软件都使用了该布局控

WinForm界面开发之模块化分合

大千世界,合久必分,分久必合,分合之道,利之所趋. 开发过程,积少成多,聚沙成塔,模块之理,必经之路. 本文继续WInform界面开发系列的介绍,主要针对性介绍Winform开发过程中,经常用到的模块:数据字典模块.参数配置模块.权限管理模块的模块化应用,以及各模块的分合之道. 1.数据字典模块 我们知道,一般程序基本上都涉及到了一个是数据参考用途的数据字典模块,不管是Web还是Winform的,这个模块基本上是必不可少的,Winform的界面效果大致如下所示: 本模块的数据字典支持无限级树形分

WinForm界面开发之酒店管理系统--开篇

星移斗转,时光似箭,不知不觉中,酒店管理系统的开发从开始到现在的结束,已经2个月了,2个月的业余时间,2个月的生活情趣,都寄托在这个软件当中,经历了各种艰苦和困惑,终于得以修成正果---深田之星酒店管理系统的顺利发布. 技术的历程是一个开拓进取.攻克难题的历程,其中有困惑也有兴奋,有苦涩也有甜蜜, 在这个过程中,再一次检阅了我的Database2Sharp代码自动生成的开发工具的,再一次从"深田之星送水管理系统"进行升华,技术从来没有尽头,只有不断完善,以及不断的超越和创新.在这个过程

艾伟_转载:WinForm界面开发之酒店管理系统--开篇

星移斗转,时光似箭,不知不觉中,酒店管理系统的开发从开始到现在的结束,已经2个月了,2个月的业余时间,2个月的生活情趣,都寄托在这个软件当中,经历了各种艰苦和困惑,终于得以修成正果---深田之星酒店管理系统的顺利发布. 技术的历程是一个开拓进取.攻克难题的历程,其中有困惑也有兴奋,有苦涩也有甜蜜, 在这个过程中,再一次检阅了我的Database2Sharp代码自动生成的开发工具的,再一次从"深田之星送水管理系统"进行升华,技术从来没有尽头,只有不断完善,以及不断的超越和创新.在这个过程

调整代码生成工具Database2Sharp的Winform界面生成,使其易于列表工具栏的使用

在Winform界面开发的时候,有时候我们客户喜欢把功能放在列表界面的顶部,这样界面和功能整齐放置,也是一种比较美观的方式,基于这种方式的考虑,改造了代码生成工具的Winform界面生成规则,把增删改查的常规处理功能抽取简化的函数,易于在实际项目中使用工具栏的方式处理. 1.常规的Winform界面 我们在之前的界面中,通常都是使用一些按钮,以及右键菜单的方式进行功能的展示,如下界面所示. 这种方式是我们常规的界面生成和布局方式,对于功能相对较少的业务模块来说,是比较简洁的,多数操作都放在了右键

Google toolbar 工具条介绍

中介交易 SEO诊断 淘宝客 云主机 技术大厅 互联网信息搜索是仅次于电子邮件的第二大网络应用,几乎所有上网的人都会用到搜索引擎来查找信息,因此对网民们来说,搜索引擎已成为大家网上冲浪不可或缺的得力助手. 在众多搜索引擎中,Google以它查询精确,功能强大,速度快而日益受到用户欢迎.以纯搜索应用而言,Google是目前使用频率最高的搜索引擎.如果你平时用过搜索引擎却没听说过Google的话,那只能说你太孤陋寡闻了! 图1 Google一贯的目标的是成为最好的搜索引擎,为满足用户需求可谓不遗余力

WinForm界面开发之“HTML内容编辑控件”

做过了很多Winform的共享软件,对界面的设计有了一定的经验和积累,准备开一个"WinForm界面开发"系列文章,介绍下相关的Winform界面设计和相关控件的使用,促进相互交流,以获得更好的发展和了解. 在很多Winform程序中 ,我们可能需要HTML内容的所见即所得的编辑控件,如Asp.net中的FreeTextBox等控件样式的. 搜索了一下,发现很少这方面的控件,找了一个,好像是收费的,而且感觉一般,跳过,再找,然后发现CodeProject 上有一个不错的东西,拿过来进行

循序渐进开发WinForm项目(4)--Winform界面模块的集成使用

随笔背景:在很多时候,很多入门不久的朋友都会问我:我是从其他语言转到C#开发的,有没有一些基础性的资料给我们学习学习呢,你的框架感觉一下太大了,希望有个循序渐进的教程或者视频来学习就好了. 其实也许我们每天面对的太多东西了,觉得很多都稀松平常了,即使很细微的地方,可能我们都已经形成习惯了.反过来,如果我们切换到其他领域,如IOS.android,那么开始我们可能对里面很多设计的规则不甚了解,开始可能也是一头雾水. 本篇继续上一篇<循序渐进开发WinForm项目(3)--Winform界面层的项目