原創|使用教程|編輯:龔雪|2022-11-02 09:58:13.903|閱讀 403 次
概述:本文主要介紹在使用DevExpress WinForm開發一個應用程序是,如何添加和自定義工具欄皮膚選擇器,歡迎下載相關組件體驗!
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
DevExpress WinForm擁有180+組件和UI庫,能為Windows Forms平臺創建具有影響力的業務解決方案。DevExpress WinForms能完美構建流暢、美觀且易于使用的應用程序,無論是Office風格的界面,還是分析處理大批量的業務數據,它都能輕松勝任!
您可以向工具欄(BarManager)和Ribbon Control添加skin selectors(皮膚選擇器),來允許用戶在運行時選擇皮膚。
在設計時,單擊工具欄中的[Add]按鈕,并從skin Item子菜單中選擇一個皮膚選擇器。
以下皮膚選擇器可用:
您可以在代碼中修改皮膚選擇器,為此使用皮膚選擇器的集合。
當您創建皮膚選擇器(SkinBarSubItem, SkinDropDownButtonItem, skinpaletdropdownbuttonitem, SkinRibbonGalleryBarItem和SkinPaletteRibbonGalleryBarItem)并將它們添加到代碼中的工具欄或Ribbon控件時,確保調用了皮膚選擇器的Initialize方法。
C#
SkinBarSubItem skinBarSubItem1 = new SkinBarSubItem(); barManager1.Items.Add(skinBarSubItem1); bar1.ItemLinks.Add(skinBarSubItem1); skinBarSubItem1.Initialize();
VB.NET
Dim skinBarSubItem1 As New SkinBarSubItem() BarManager1.Items.Add(skinBarSubItem1) Bar1.ItemLinks.Add(skinBarSubItem1) skinBarSubItem1.Initialize()
你可以在皮膚選擇器中隱藏單獨的項目,如下所示:
1. 創建要排除的皮膚名稱的字符串數組,您可以使用全名(例如,“Office 2016 Colorful”)或部分名稱(例如,“2007”)。
C#
string[] skinsToHide = { "Seven Classic", "DevExpress Style", "Dark", "2010", "2007", "Sharp" };
VB.NET
Dim skinsToHide() As String = { "Seven Classic", "DevExpress Style", "Dark", "2010", "2007", "Sharp" }
2. 創建一個自定義方法(HideSkins),遍歷皮膚選擇器的項,并刪除與數組中值匹配的皮膚。
C#
private void HideSkins(string[] skinsToHide) { for(var i = 0; i < skinBarSubItem1.ItemLinks.Count; i++) { //Check regular button items if(skinBarSubItem1.ItemLinks[i] is BarButtonItemLink) { var item = skinBarSubItem1.ItemLinks[i]; foreach(var skin in skinsToHide) { if(item.Caption.Contains(skin)) { item.Visible = false; } } } //Check buttons nested in the "Bonus Skins" sub-menu if(skinBarSubItem1.ItemLinks[i] is BarSubItemLink && skinBarSubItem1.ItemLinks[i].Caption == "Bonus Skins") { BarSubItemLink group = (BarSubItemLink)skinBarSubItem1.ItemLinks[i]; for(var j = 0; j < group.Item.ItemLinks.Count; j++) { var item = group.Item.ItemLinks[j]; foreach(var skin in skinsToHide) { if(item.Caption.Contains(skin)) { item.Visible = false; } } } } //Hide theme skins if(skinBarSubItem1.ItemLinks[i] is BarSubItemLink && skinBarSubItem1.ItemLinks[i].Caption == "Theme Skins") { skinBarSubItem1.ItemLinks[i].Visible = false; } } }
VB.NET
Private Sub HideSkins(ByVal skinsToHide() As String) For i = 0 To skinBarSubItem1.ItemLinks.Count - 1 'Check Items If TypeOf skinBarSubItem1.ItemLinks(i) Is BarButtonItemLink Then Dim item = skinBarSubItem1.ItemLinks(i) For Each skin In skinsToHide If item.Caption.Contains(skin) Then item.Visible = False End If Next skin End If 'Check bonus skins If TypeOf skinBarSubItem1.ItemLinks(i) Is BarSubItemLink AndAlso skinBarSubItem1.ItemLinks(i).Caption <> "Theme Skins" Then Dim group As BarSubItemLink = CType(skinBarSubItem1.ItemLinks(i), BarSubItemLink) For j = 0 To group.Item.ItemLinks.Count - 1 Dim item = group.Item.ItemLinks(j) For Each skin In skinsToHide If item.Caption.Contains(skin) Then item.Visible = False End If Next skin Next j End If 'Hide theme skins If TypeOf skinBarSubItem1.ItemLinks(i) Is BarSubItemLink AndAlso skinBarSubItem1.ItemLinks(i).Caption = "Theme Skins" Then skinBarSubItem1.ItemLinks(i).Visible = False End If Next i End Sub
3. 從Load事件處理程序調用HideSkins方法。
C#
void ucBar_Load(object sender, EventArgs e) { HideSkins(skinsToHide); }
VB.NET
Private Sub ucBar_Load(ByVal sender As Object, ByVal e As EventArgs) HideSkins(skinsToHide) End Sub
遍歷皮膚選擇器的ItemLinks集合以更改項標題或符號。
C#
void ucBar_Load(object sender, EventArgs e) { RenameSkins(); } private void RenameSkins() { for(var i = 0; i < skinBarSubItem1.ItemLinks.Count; i++) { if(skinBarSubItem1.ItemLinks[i].Caption == "DevExpress Style") { BarButtonItem parentItem = (BarButtonItem)skinBarSubItem1.ItemLinks[i].Item; parentItem.Caption = "Default Skin"; parentItem.ImageUri.Uri = "Apply"; } } }
VB.NET
Private Sub ucBar_Load(ByVal sender As Object, ByVal e As EventArgs) RenameSkins() End Sub Private Sub RenameSkins() For i = 0 To skinBarSubItem1.ItemLinks.Count - 1 If skinBarSubItem1.ItemLinks(i).Caption = "DevExpress Style" Then Dim parentItem As BarButtonItem = CType(skinBarSubItem1.ItemLinks(i).Item, BarButtonItem) parentItem.Caption = "Default Skin" parentItem.ImageUri.Uri = "Apply" End If Next i End Sub
下圖顯示了結果:
還可以使用Localizer對象重命名皮膚項。
DevExpress技術交流群6:600715373 歡迎一起進群討論
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:慧都網