一、新建一个导航栏

拖入一个panel到窗口上做为导航栏的容器,然后再拖入一个NavBarControl到其上,点击NavBarControl控件的右上角三角箭头展开任务列表,选择PaintStyle模式为Navigationpane,也就是同时最大展开的分组数目为1。

二、手动为导航栏添加数据

点击控件右上角三角箭头展开任务列表,选择Run Designer打开设计界面。

设计界面的Main -> Groups/Items/Links为导航栏的分组及子项目编辑界面,我们进入此界面,在右侧的NavBar Groups窗口内点击鼠标焦点至此窗口时,上方的添加按钮可以添加新的分组,在右侧的NavBar Items窗口内点击鼠标焦点至此窗口时,上方的添加按钮可以添加新的子项目,选中每个分组或子项目可以在右侧的属性窗口快捷设置他的常用属性,添加好了多个分组和子项目时,需要将子项目指定到某一分组内,直接用鼠标拖动NavBar Items中的子项目到NavBar Groups中的该分组下。

我们创建好了多个分组和子项目后,直接点击运行,查看此时的效果。

三、捕获导航栏的基本事件

捕获导航栏子项目的鼠标点击事件LinkClicked:

  1. public Form1()
  2. {
  3. InitializeComponent();
  4. OtherInit();
  5. }
  6. /// <summary>
  7. /// 其他的初始化处理
  8. /// </summary>
  9. private void OtherInit()
  10. {
  11. navBarItem1.LinkClicked += Item_Click;
  12. navBarItem2.LinkClicked += Item_Click;
  13. navBarItem3.LinkClicked += Item_Click;
  14. navBarItem4.LinkClicked += Item_Click;
  15. navBarItem5.LinkClicked += Item_Click;
  16. navBarItem6.LinkClicked += Item_Click;
  17. navBarItem7.LinkClicked += Item_Click;
  18. navBarItem8.LinkClicked += Item_Click;
  19. navBarItem9.LinkClicked += Item_Click;
  20. }
  21. /// <summary>
  22. /// 导航栏子项目的点击事件
  23. /// </summary>
  24. private void Item_Click(object sender, NavBarLinkEventArgs e)
  25. {
  26. MessageBox.Show("点击了子项目:" + e.Link.Caption);
  27. }

四、动态更改导航栏数据

只需要根据数据动态的创建分组和子项目,并将子项目添加到分组之下:

  1. NavBarGroup nbGroup1 = new NavBarGroup();
  2. nbGroup1.Name = "nbGroup1";
  3. nbGroup1.Caption = "动态添加的分组";
  4. nbGroup1.SmallImageIndex = -1;
  5. nbGroup1.LargeImageIndex = -1;
  6. //添加到导航栏所有分组集合
  7. navBarControl1.Groups.Add(nbGroup1);
  8. NavBarItem nbItem1 = new NavBarItem();
  9. nbItem1.Name = "nbItem1";
  10. nbItem1.Caption = "动态添加的子项目";
  11. nbItem1.SmallImageIndex = -1;
  12. nbItem1.LargeImageIndex = -1;
  13. nbItem1.LinkClicked += Item_Click;
  14. //添加到导航栏所有子项目集合
  15. navBarControl1.Items.Add(nbItem1);
  16. //添加子项目至某一分组
  17. nbGroup1.ItemLinks.AddRange(new NavBarItemLink[] {
  18. new NavBarItemLink(nbItem1)
  19. });

点击左侧加载控件

  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Text;
  7. using System.Linq;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;
  10. using DevExpress.XtraEditors;
  11. using DevExpress.XtraTab;
  12. using DevExpress.XtraTab.ViewInfo;
  13.  
  14. namespace Demo
  15. {
  16. public partial class XtraForm : DevExpress.XtraBars.Ribbon.RibbonForm
  17. {
  18. public XtraForm()
  19. {
  20. InitializeComponent();
  21. ((IXtraTab)xtraTabControl1).ViewInfo.HeaderButtonClick += (s, e) =>
  22. {
  23. //关闭所有page
  24. if (e.Button == TabButtons.Close)
  25. xtraTabControl1.TabPages.ToList().ForEach(x =>
  26. {
  27. x.Dispose();
  28. x = null;
  29. });
  30. };
  31.  
  32. xtraTabControl1.CloseButtonClick += (s, e) =>
  33. {
  34. //关闭单个page
  35. var args = (ClosePageButtonEventArgs)e;
  36. var page = args.Page as XtraTabPage;
  37. if (page != null)
  38. {
  39. page.Dispose();
  40. page = null;
  41. }
  42. xtraTabControl1.SelectedTabPageIndex -= xtraTabControl1.TabPages.Count;
  43. };
  44.  
  45. navBarControl1.LinkClicked += (s, e) =>
  46. {
  47. //创建page
  48. CreatePage(e.Link.Item.Caption, e.Link.Item.Tag);
  49. };
  50. }
  51. private void CreatePage(string caption, object tag)
  52. {
  53. if (string.IsNullOrWhiteSpace(caption) || tag == null || string.IsNullOrWhiteSpace(tag.ToString())) return;
  54.  
  55. foreach (XtraTabPage pg in xtraTabControl1.TabPages)
  56. {
  57. if (pg.Text.Contains(caption.Trim()))
  58. {
  59. xtraTabControl1.SelectedTabPage = pg;
  60. return;
  61. }
  62. }
  63. var tabpage = new XtraTabPage() { Text = caption.Trim(), Padding = new Padding(, , , ) };
  64.  
  65. try
  66. {
  67. var control = Activator.CreateInstance(Type.GetType(tag.ToString().Trim(), false, false)) as UserControl;
  68.  
  69. if (control != null)
  70. {
  71. control.Visible = true;
  72. control.Dock = DockStyle.Fill;
  73. tabpage.Controls.Add(control);
  74.  
  75. tabpage.PageVisible = true;
  76. xtraTabControl1.TabPages.Add(tabpage);
  77. xtraTabControl1.SelectedTabPage = tabpage;
  78. }
  79. }
  80. catch { throw; }
  81. }
  82. //void navBarControl_ActiveGroupChanged(object sender, DevExpress.XtraNavBar.NavBarGroupEventArgs e)
  83. //{
  84. // navigationFrame.SelectedPageIndex = navBarControl1.Groups.IndexOf(e.Group);
  85. //}
  86. void barButtonNavigation_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
  87. {
  88. int barItemIndex = barSubItemNavigation.ItemLinks.IndexOf(e.Link);
  89. navBarControl1.ActiveGroup = navBarControl1.Groups[barItemIndex];
  90. }
  91.  
  92. private void barButtonItem1_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
  93. {
  94. //打开文件
  95. userControl11.UpLoadExcel();
  96. }
  97. }
  98. }

2:在navBarItem1属性中

就可以把自定义控件加到tabcontrol里了.

dev NavBarControl控件的更多相关文章

  1. Dev系列控件的AJAX (转)

    介绍Dev系列控件在前台也就是客户端的一些常用方法介绍以及前后台异步通信的方法. 一.Dev Data Edit控件通用属性以及方法: 属性 1.GetEnabled():返回控件是否为可操作状态 2 ...

  2. Winform DevExpress控件库(三) 使用NavBarControl控件定制导航栏

    NavBarControl控件:主要作用是制作包含多个选项组并且每个组里包含多个子选项的导航栏: 位于 工具箱 -> Navigation & Layout(导航栏与布局类控件) 目录下 ...

  3. [DevExpress使用随笔]之NavBarControl控件(一)【转】

    https://blog.csdn.net/HXC_HUANG/article/details/78614092 NavBarControl是具有可扩展组的侧导航控件.一.在Winform窗口中拖入N ...

  4. dev的控件放在没有runat="server"的标签中,回调出现的问题

    dev的控件放在没有runat="server"的标签中,第一次回调是会刷新页面, 有runat="server"时不会刷新页面

  5. ASP.NET Dev ASPxGridView控件使用 ASP.NET水晶报表打印

    1.ASPxGridView控件使用 2.ASP.NET水晶报表客户端打印 3.javascript打印 4.ASPxGridView根据Textbox查询 5. ASPxGridView 列宽 1. ...

  6. Dev系列控件的AJAX使用Demo

    一.Dev Data Edit控件通用属性以及方法: 属性 1.GetEnabled():返回控件是否为可操作状态 2.GetText():返回控件的Text的值 3.SetEnabled():设置控 ...

  7. NavBarControl控件 2015-07-23 16:56 2人阅读 评论(0) 收藏

    NavBarControl控件 1.      新建一个windows窗体应用程序项目 2.      在工具箱中的Navigation& Layout选项卡下找到NavBarControl, ...

  8. dev layoutControl 控件使用

    对于排版控件,用微软的方法都是先拉 label再拉一个 Textbox  ,  虽然微软的控件了有类似于 EXCEL的单元格全并功能,但用起来使终不方便, 今天研究了一下 DEV 的这个控件,比微软的 ...

  9. DEV 第三方控件报表分类汇总

    最近这段时间难得空闲,于是打算做个报表功能,主要实现数据的分类汇总,以便不时之需.首先看看效果: 主要是根据工程类型这个字段进行分类,每个分类下对应的项目金额进行求和,当然,你也可以根据实际需求,进行 ...

随机推荐

  1. 译:SQL Server的Missing index DMV的 bug可能会使你失去理智---慎重看待缺失索引DMV中的信息

    注: 本文译自https://www.sqlskills.com/blogs/paul/missing-index-dmvs-bug-that-could-cost-your-sanity/ 原文作者 ...

  2. 认识bash和shell

    各个 shell 的功能都差不多, Linux 默认使用 bash ,所以我们主要学习bash的使用. 1.bash命令格式 命令 [-options] [参数],如:tar  zxvf  demo. ...

  3. 百度开放平台连接MySQL数据库

    在百度开放平台创建了MySQL数据库后只知道数据库名称,可以通过下面的方法进行连接: public function connect(){ $_server = getenv('HTTP_BAE_EN ...

  4. 第五周特种JAVA健民欧巴分享经验

    1.int为原始数据类型,没有特殊含义: 另一个为引用类型:该类型定义后可以开辟内存空间: 2.特殊值null:代表一个对象变量不引用任何对象//null不是为空,就是什么都没有. 3.  “==” ...

  5. centos7 增加虚拟网卡

    确认内核是否有tun模块 # modinfo tun yum install tunctl -y 如果找不到 vim /etc/yum.repos.d/nux-misc.repo [nux-misc] ...

  6. Socket通讯-Netty框架实现Java通讯

    Netty简介 Netty是由JBOSS提供的一个java开源框架.Netty提供异步的.事件驱动的网络应用程序框架和工具,用以快速开发高性能.高可靠性的网络服务器和客户端程序. 也就是说,Netty ...

  7. vps vultr centos7 搭建 伟皮恩

    vultr 配置 64 bit OS   CentOS 7 ×64 20 GB SSD    1 CPU  512MB  Memory  500GB Bandwidth √ Enable IPv6 √ ...

  8. centos 7 redis-4.0.11 哨兵

    redis-master:192.168.199.223 redis-slave_1: 192.168.199.224 redis-slave_2: 192.168.199.252 redis-mas ...

  9. HDFS之深入简出(一)

    分布式文件系统HDFS 一:概述 1.HDFS设计目标 2.HDFS核心组件 3.HDFS副本机制 4.HDFS环境搭建 5.HDFS shell命令  java api 6.HDFS读写流程 7.H ...

  10. phpStudy安装教程

    1.在phpStudy官网下载安装包(http://phpstudy.php.cn/)2.解压安装后,若提示没有“VC9.VC11.VC14运行库,注意是X86 32位”,则在phpStudy下载对应 ...