NavBarControl控件是“导航栏控件”,主要是由分组Group和子项Item组成.
位于 工具箱 -> Navigation & Layout(导航栏与布局类控件) 目录下;
NavBarControl控件的属性介绍:
蓝色为常用属性,红色为未知、几乎不怎么用的属性,其他托管属性,暂时不需要我们去处理
BarManager | |
MenuManager | (BarManager)菜单管理 |
布局 | |
Anchor | (enum)控件锚点 通用属性,设置Top、Bottom、Right、Left四个位置以使 控件在指定方位跟随父容器变换而变换 |
Dock | (enum)控件在父容器中停靠方式 通用属性,五个可选值设置使控件停靠在父容器的上下左 右四个方位或充满整个父容器 |
Location(X,Y) | (int)控件的位置 通用属性,上方Dock属性为None时生效 |
Size(W,H) | (int)控件的长宽 通用属性,上方Dock属性为None时生效 |
行为 | |
AllowDrop | (bool)是否接收用户拖到控件上的数据 |
Enabled | (bool)控件是否激活 |
LinkSelectionMode | (enum)指定当前选中的项目是否保持选中 |
TabIndex | (int)tab键切换焦点的索引 |
TabStop | (bool)是否禁用tab键切换焦点 |
Visible | (bool)控件是否可见 |
数据 | |
Groups | (NavGroupCollection)当前导航栏的所有分组 |
Items | (NavItemCollection)当前导航栏的所有选项 |
外观 | |
ActiveGroup | (NavBarGroup)当前展开的分组,PaintStyle不为 ExplorerBar(也就是同时只能有一个分组展开)时生效 |
Appearance | (NavBarAppearances)整个控件的外观属性设置,应用 于控件中的所有部件 |
HotTrackedGroupCursor | (enum)鼠标停在分组上的显示样式 |
HotTrackedItemCursor | (enum)鼠标停在选项上的显示样式 |
LargeImages | (ImageList)大图标集合,可供控件下的其他部件在其中 选择自己的大图标 |
LinkInterval | (int)行间距 |
LookAndFeel | 控件使用的皮肤 |
NavigationPaneGroupClientHeight | (int)导航面板组的高度,决定下方的分组栏目是否缩进 |
NavigationPaneMaxVisibleGroups | (int)导航面板最大可见分组 |
NavigationPaneOverflowPaneUse SmallImages | (bool)导航窗格被缩进的分组是否使用小图标 |
OptionsNavPane(导航窗格的选项设置) | |
AllowOptionsMenuItem | (bool)菜单项是否允许选择 |
AnimationFramesCount | (int)导航栏缩进动画的帧数 |
CollapsedNavpaneContentControl | (Control)整个导航栏缩进时显示的控件 |
CollapsedWidth | (int)导航栏缩进时保持的宽度 |
ExpandButtonMode | (enum)导航栏缩进的方向,比如靠左还是靠右 |
ExpandedWidth | (int)导航栏展开时的宽度 |
GroupImageShowMode | (enum)导航栏的分组在什么情况下才显示图标 |
MaxPopupFormWidth | (int)导航栏缩进时,点击选项弹出的窗口最大值 |
NavPaneState | (enum)当前导航栏的状态,是展开还是缩进 |
ShowExpandButton | (bool)是否显示导航栏缩进按钮 |
ShowGroupImageInHeader | (bool)是否显示当前已展开分组的图标 |
ShowHeaderText | (bool)是否显示当前已展开分组的名称 |
ShowOverflowButton | (bool)是否显示导航栏中分组的缩进按钮 |
ShowOverflowPanel | (bool)是否显示导航栏中分组的缩进平面 |
ShowSplitter | (bool)是否显示分割线 |
PaintStyleKind | (enum)导航栏的模式,比如同时只允许展开一个分组 或者可以多个分组一起展开 |
PaintStyleName | (enum)导航栏的样式 |
RightToLeft | (enum)导航栏是否是从右到左对齐 |
SkinExplorerBarViewScrollStyle | (enum)PaintStyleKind为ExplorerBar模式时,内容超出 时的进度条显示模式 |
SmallImages | (ImageList)控件的小图标集合,对应当前项目中的任一 图片集 |
Text | (string)控件的显示内容 |
UseWaitCursor | (bool)鼠标经过此控件时是否切换为等待状态光标 |
实例介绍
:
1.新建导航栏:
可以点击右上角的箭头设置基本样式,选择NavigationPane,意思是最多只展开一个分组,其余三个选项也是修改展开分组的样式的;也可以在属性窗口中选择PaintStyleKind来设置。
2.手动添加导航栏数据:
可以点击RunDesigner来设计,同时也可以在属性窗口中点击Groups和Items来设置;
设计界面的Main -> Groups/Items/Links为导航栏的分组及子项目编辑界面,我们进入此界面,在右侧的NavBar Groups窗口内点击鼠标焦点至此窗口时,上方的添加按钮可以添加新的分组,在右侧的NavBar Items窗口内点击鼠标焦点至此窗口时,上方的添加按钮可以添加新的子项目,选中每个分组或子项目可以在右侧的属性窗口快捷设置他的常用属性,添加好了多个分组和子项目时,需要将子项目指定到某一分组内,直接用鼠标拖动NavBar Items中的子项目到NavBar Groups中的该分组下。
效果图:
3.捕获导航栏的事件:
捕获导航栏子项目的鼠标点击事件LinkClicked:
#region 初始化操作
public Form1()
{
InitializeComponent();
OtherInit();//其他初始化操作
DynamicAdd();//动态添加分组和子项
}
/// <summary>
/// 其他的初始化方法
/// </summary>
private void OtherInit()
{
//委托是这样使用的,这样就不用每个子项都写一个点击事件了
this.navBarItem1.LinkClicked+=Item_Click;
this.navBarItem2.LinkClicked += Item_Click;
this.navBarItem3.LinkClicked += Item_Click;
this.navBarItem4.LinkClicked += Item_Click;
this.navBarItem5.LinkClicked += Item_Click;
this.navBarItem6.LinkClicked += Item_Click;
this.navBarItem7.LinkClicked += Item_Click;
this.navBarItem8.LinkClicked += Item_Click;
this.navBarItem9.LinkClicked += Item_Click;
}
#endregion
#region 主导航栏子项目的点击事件
private void Item_Click(Object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
{
MessageBox.Show("点击了子项目:"+e.Link.Caption+"!");
}
#endregion
效果图:
动态更改导航栏的数据:
只需要根据数据动态的创建分组和子项目,并将子项目添加到分组之下:
#region 动态的添加分组和子项目
private void DynamicAdd()
{
NavBarGroup nbGroup1 = new NavBarGroup();
nbGroup1.Name = "nbGroup1";
nbGroup1.Caption = "动态添加的分组";
navBarControl1.Groups.Add(nbGroup1);//将该分组添加到导航栏的所有Groups集合
NavBarItem nbItem1 = new NavBarItem();
nbItem1.Name = "nbItem1";
nbItem1.Caption = "动态添加的子项";
navBarControl1.Items.Add(nbItem1);//将该子项添加到导航栏的所有Items集合
//添加子项到某一个分组
nbGroup1.ItemLinks.AddRange(new NavBarItemLink[] { new NavBarItemLink(nbItem1)});
}
#endregion
效果: