1. 程式人生 > >DevExpress_常用控制元件01_Bar_Manager

DevExpress_常用控制元件01_Bar_Manager

1.1 Bar Manager    

如果想在窗體或使用者控制元件新增工具條彈出選單

我們需要把一個不可見的控制元件 BarManager拖放到這個窗體或使用者控制元件上。


這個BarManager控制元件維護工具條在窗體上的佈局,

處理使用者的行為,提供一些定製功能等等。


這個BarManager控制元件維護:

1. 工具條(bars)、

2. 工具條項(bar items)、

3 .工具條項目錄(bar item categories) 這三者的集合

所以我們可以使用BarManager的一些方法去新增、刪除、訪問這些工具條元素。   


注意:1)一個窗體上只能放置一個BarManager控制元件。

          2)由於BarManager控制元件與RibbonControl控制元件可能會彼此衝突,

                所以不推薦在同一個窗體或使用者控制元件上同時使用工具條Ribbon控制元件


當把BarManager新增到一個窗體或使用者控制元件上後,

我們就可以使用上下文選單

BarManager的定製視窗

或它的設計器來建立工具條工具條命令了。


1.1.2、Toolbars

工具條是一個可視的控制元件,它用來顯示各個專案連結。

我們可以在工具條內顯示由XtraBars庫提供的任意專案連結,

比如:按鈕(buttons),靜態文字(static text),子選單(submenu)、編輯器(editors)等等。


1.1.3、 Bar Items

為了把多種元素(比如按鈕,子選單,標籤,編輯器等)新增到工具條和選單,我們需要建立合適的bar items。

一個bar item是一個實現了特定功能的非可見物件

它定義了一個相應的元素如何顯示在螢幕上,並決定了對滑鼠單擊事件的相應。


我們可以右擊底部的BarManager,

選擇彈出Customize窗體,

然後切換到Commands頁來建立bar items。


為 了在邏輯上組織這些item,我們經常將它們分類。

該窗體的左側面板裡顯示了有效的分類目錄,

右側面板顯示了屬於當前選中分類目錄的各個bar item。

選中一個bar item可以在屬性視窗看到其屬性。


1.1.4、Popup Menus

使用彈出選單(popup menus),

我們可以在   控制元件上   顯示   上下文選項   或  命令

彈出選單是一個顯示了特定項的窗體,使用者可以選擇這些項以執行相應的操作。

使用PopupMenu控制元件就可以在我們的應用程式中使用彈出選單。

通過BarManager的“名稱”+“PopupContenxtMenu”屬性繫結PopuMenus控制元件


注意:

在定製和使用popup menu之前,

需要向窗體上新增一個bar manager並確保這個popup menu繫結 了這個bar manager


預設情況下,在設計時(at design time)新增到窗體的彈出選單會自動地尋找窗體內的 bar manager

如果找到的話,會通過PopupMenu.Manager屬性將其繫結到bar manager。

如果沒有自動繫結到bar manager,那就通過PopupMenu.Manager屬性手動繫結。


DevExpress元件之——PopupMenu元件

以下是PopupMenu元件的使用方法:

第一步:從工具箱中將BarManager拉入窗體


第二步:在BarManager控制元件中點選

新增幾個BarSubItem項(子項-有下一級選單)。


第三步:在BarManager控制元件中點選新增幾個BarBottonItem(最終項)。


第四步:從工具箱中將PopupMenu拉入窗體,設定PopupMenu的Manager屬性為barManager1


第五步:右擊PopupMenu在彈出的選單內選中Customize,

然後在彈出的對話方塊中, 把想要在右鍵選單中顯示的項   拉進PopupMenu中就OK了(OK你個頭,試了好久都不行)。


核心步驟 第六步:

在需要右擊後彈出選單的控制元件上, 監聽xxxx_MouseUp事件,

新增以下程式碼段, 彈出PopupMenu選單

if (e.Button == MouseButtons.Right)
{
popupMenu1.ShowPopu(Control.MousePosition);
}


效果如下:


1.1.5、Categories

XtraBars允許我們將bar items在邏輯上劃分為不同的類別(categories)。

每個類別都是一組item,並且每個item都只屬於一個類別(category)。

類別不會對該類的item附加任何約束,分類只是為了對item進行有組織的訪問。


BarManagerCategory類表示一個類別。

我們通過BarManager.Categories集合新增、移除、存取類別。

使用BarItem.Category屬性,我們可以為每個item分配一個類別。


1.1.6、Bar Dock Controls

工具條停放控制元件(bar dock controls)是工具條(toolbar)的容器,

它們位於窗體或使用者控制元件內用以容納工具條物件。

regularstandalone兩種工具條停放控制元件


regular bar dock controls是由BarManager自動維護的,我們不用手動去建立它們。

它們停靠在容器(比如窗體)的任意一邊,以顯示工具條。


BarManager中的StandaloneBarDockControl屬性用來在窗體內的任何位置顯示工具條。

我們需要手動繫結StandaloneBarDockControl控制元件


1.1.6.1 Regular Bar Dock Controls

當工具條停靠於容器(比如form)的任意一邊時,regular bar dock controls將工具條的停靠位置顯示出來。

當建立 Bar Manager時,它會自動建立4個regular dock controls,並將它們停靠在窗體的相應邊緣。


只有當一個工具條停放在一個dock control上時,這個dock  control才是可見的。

其他情況下,dock  control的寬度都是0。

當將工具條拖動到窗體的任意一邊時,相應的dock controls會容納並顯示這個工具條。

Bar.CanDockStyle屬性可以指定工具條的可能停放位置。


一般情況下,在應用程式中是沒有必要去改變自動生成的regular dock controls的屬性。

除非 我們想 要為停靠的工具條提供背景設定。

Bar Manager會自動建立名為barDockControl1...barDockControl4的4個 dock controls。

每個dock control都是一個BarDockControl類。

在設計時,我們通過在屬性視窗選擇相應的物件來訪問 dock control。


此外,如果dock control是可見的,並且沒有完全被工具條覆蓋,

那麼, 我們可以單擊選中它,以在屬性視窗中顯示它。


1.1.6.2 Standalone Bar Dock Controls

Standalone bar dock controls允許工具條停靠在窗體或使用者控制元件上的任意位置,而不僅僅是窗體的邊緣。

建立一個StandaloneBarDockControl物件並且將工具條新增到其上就能做到這種效果。


像regular bar dock control一樣,standalone bar dock controls可以在窗體或使用者 控制元件中隨意放置。

它們的Dock、Location和Size屬性用來指定佈局設定。


StandaloneBarDockControl.AutoSize屬性用來啟用自動調整大小模式。

在這種模式下,當向該控制元件新增或刪除工具條時,該控 件的大小是自動變化的。


使用Standalone bar dock controls的前提是:

該窗體或使用者控制元件上已添加了 BarManager控制元件。

如果我們以編碼的方式建立了StandaloneBarDockControl物件,

那麼我們就需要手動將其新增到 BarManager的BarManager.DockControls集合中。


1.2 Bar Manager 的使用

1.2.1 Toolbars Customization

為了在窗體上建立bar和bar  items,我們需要往窗體上新增一個BarManager控制元件。


1.2.1.1 creating bars and bar items on the form at design time

在設計時(at design time),當把BarManager新增到窗體上後,就會自動建立三個空工具條,

分別是:窗體頂部的主選單欄、工具欄和窗體底部的狀態列


主選單欄   通常是一個位於窗體頂部的工具條,

其他的工具條不能和主選單欄位於同一行。

終端使用者也不能關閉主選單欄。


預設情況下,使用者可以拖拽主選單欄,將其停靠至窗體的任意邊緣。

主選單欄  被賦予至BarManager.MainMenu屬性


狀態列  通常是一個位於窗體底 部的工具條。

使用者不能拖動該工具條。

BarManager.StatusBar屬性賦值為該狀態列。

在一個窗體上只有一個主選單和一個狀態列。


預設情況下,工具條上有[Add]上下文連結(context links)。

通過該連結,我們可以將bar items新增到工具條上。

我們可以單擊[Add]連結來啟用bar item列表,然後從中選擇需要的bar item。


選擇一個item後,它即被新增到工具條上,同時文字編輯器也被啟用。

在此文字編輯器裡我們可以編輯新新增項的名字。

按Enter鍵來結束編輯和該項的新增。


如果我們要新增一個子選單(submenu),那麼先選擇sub-menu以新增選單項(Menu Item),

然後再次單擊它,並通過[Add]新增新的bar item。


若想在設計時隱藏[Add]上下文連結,右擊BarManager控制元件,

然後勾去“show design time enhancements"選項即可。

如果是勾選了這個選項,[Add]連結又會出現。


1.2.1.2 creating bars and bar items using the customization window

右擊滑鼠,使用BarManager的Customization視窗是向窗體新增 工具條 和 bar items的另一種方式。

1)Manipulate Bars

切換到Customization視窗Toolbars頁,單擊new,即可新增工具條。

選擇工具條列表中的一個,點選delete,即可刪除該工具條。

只有在執行時,Rename和Reset按鈕才處於啟用狀態。


2)Adding Bar Items

切換到Commands頁,點選modify按鈕,

然後選擇Add選單項,Add New BarItem對話方塊就會出現。

在該對話方塊裡,我們可以指定該項的分類、名字、標題(caption)等。

當新的item建立後,我們就可以把它拖放到工具條上。


1.2.1.3 creating bars using the barmanager's designer

BarManager的設計器也是用來新增、刪除、自定義設定工具條的一種方式。

切換到Toolbars頁,單擊Add New Toolbar和Delete Toolbar按鈕即可建立或刪除工具條。


1.2.1.4 customizing items and links at design time

在設計時,當你選擇一個連結, 它就會在屬性視窗中顯示相應item的設定;

如果改變這個item的外觀設定, 就會影響到該item的所有屬性沒有顯性設定的連結。


為了避免對這些連結造成影響,我們可以這樣做:

在設計時,右擊這個連結,通過彈出的選單來改變設定。


選項                                                                 描述


Reset                        重置該連結的所有自定義設定。選中該選項後,這個連結的外觀就會由相應item的外觀設定控制。

                                 也可在程式碼中,呼叫BarItemLink.Reset方法以將其恢復到預設值。


Delete                      刪除該連結。呼叫BarItemLink.Dispose方法也可達到該目的。


Change Caption     改變item 的標題。該值會應用於所有User caption沒有設定的link。

                               這個選項對應於BarItemLink.Caption屬性。


change user            為某一link賦自定義標題,這樣就覆蓋了預設的item的標題。

                                User caption只賦值於當前的link。該選項對應於BarItemLink.UserCaption。


Default style           為某link設定預設的樣式。每個link的的預設樣式都可以是不同的。

                               使用BarItemLink.PaintStyle屬性來在程式碼裡設定paint style.


Text only                  專案連結(item link)被繪製為文字。


Text only                 item link 在選單裡被繪製為文字,在工具條裡被繪製為圖片。


Image and Text      item  link被繪製為圖片和文字。


Begin a  Group       在選中的link錢插入一分隔符,以將item links邏輯分組。

                               該選項對應於BarItemLink.BeginGroup屬性。


Visible                      決定一個item link是否可見。該選項對應於BarItemLink.Visible屬性。


Most recently         決定一個item是否指向最經常使用的link。

                              勾選掉這個選項後,就會使該link位於最近使用項列表的底部。該選項對應用                             


used                      BarItemLink.MostRecentlyUsed屬性。


1.2.1.5 How to obtain a value of the BarEditItem during editing

Object  value=(barManager1.ActiveEditor as DevExpress.XtraEditors.ButtonEdit).EditValue;