Winform DevExpress控制元件庫(三) 使用NavBarControl控制元件定製導航欄
阿新 • • 發佈:2019-01-06
NavBarControl控制元件:主要作用是製作包含多個選項組並且每個組裡包含多個子選項的導航欄;
位於 工具箱 -> Navigation & Layout(導航欄與佈局類控制元件) 目錄下;
在工具箱輸入名稱NavBarControl檢索,然後直接拖拽到面板上便可使用,最好是放在一個子容器裡(比如PanelControl);
NavBarControl控制元件常用屬性描述:(選中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)滑鼠經過此控制元件時是否切換為等待狀態游標 |
一、新建一個導航欄
拖入一個panel到視窗上做為導航欄的容器,然後再拖入一個NavBarControl到其上,點選NavBarControl控制元件的右上角三角箭頭展開任務列表,選擇PaintStyle模式為Navigationpane,也就是同時最大展開的分組數目為1。
二、手動為導航欄新增資料
點選控制元件右上角三角箭頭展開任務列表,選擇Run Designer開啟設計介面。
設計介面的Main -> Groups/Items/Links為導航欄的分組及子專案編輯介面,我們進入此介面,在右側的NavBar Groups視窗內點選滑鼠焦點至此視窗時,上方的新增按鈕可以新增新的分組,在右側的NavBar Items視窗內點選滑鼠焦點至此視窗時,上方的新增按鈕可以新增新的子專案,選中每個分組或子專案可以在右側的屬性視窗快捷設定他的常用屬性,新增好了多個分組和子專案時,需要將子專案指定到某一分組內,直接用滑鼠拖動NavBar Items中的子專案到NavBar Groups中的該分組下。
我們建立好了多個分組和子專案後,直接點選執行,檢視此時的效果。
三、捕獲導航欄的基本事件
捕獲導航欄子專案的滑鼠點選事件LinkClicked:
public Form1()
{
InitializeComponent();
OtherInit();
}
/// <summary>
/// 其他的初始化處理
/// </summary>
private void OtherInit()
{
navBarItem1.LinkClicked += Item_Click;
navBarItem2.LinkClicked += Item_Click;
navBarItem3.LinkClicked += Item_Click;
navBarItem4.LinkClicked += Item_Click;
navBarItem5.LinkClicked += Item_Click;
navBarItem6.LinkClicked += Item_Click;
navBarItem7.LinkClicked += Item_Click;
navBarItem8.LinkClicked += Item_Click;
navBarItem9.LinkClicked += Item_Click;
}
/// <summary>
/// 導航欄子專案的點選事件
/// </summary>
private void Item_Click(object sender, NavBarLinkEventArgs e)
{
MessageBox.Show("點選了子專案:" + e.Link.Caption);
}
四、動態更改導航欄資料
只需要根據資料動態的建立分組和子專案,並將子專案新增到分組之下:
NavBarGroup nbGroup1 = new NavBarGroup();
nbGroup1.Name = "nbGroup1";
nbGroup1.Caption = "動態新增的分組";
nbGroup1.SmallImageIndex = -1;
nbGroup1.LargeImageIndex = -1;
//新增到導航欄所有分組集合
navBarControl1.Groups.Add(nbGroup1);
NavBarItem nbItem1 = new NavBarItem();
nbItem1.Name = "nbItem1";
nbItem1.Caption = "動態新增的子專案";
nbItem1.SmallImageIndex = -1;
nbItem1.LargeImageIndex = -1;
nbItem1.LinkClicked += Item_Click;
//新增到導航欄所有子專案集合
navBarControl1.Items.Add(nbItem1);
//新增子專案至某一分組
nbGroup1.ItemLinks.AddRange(new NavBarItemLink[] {
new NavBarItemLink(nbItem1)
});