手把手教你用DevExpress WinForm添加和自定义工具栏皮肤选择器

DevExpress WinForms拥有180+组件和UI库,能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForms能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜任!

您可以向工具栏(BarManager)和Ribbon Control添加skin selectors(皮肤选择器),来允许用户在运行时选择皮肤。

获取DevExpress 最新版下载

向工具栏添加Skin Selector(皮肤选择器)

在设计时,单击工具栏中的[Add]按钮,并从skin Item子菜单中选择一个皮肤选择器。

以下皮肤选择器可用:

  • Skin Menu (SkinBarSubItem) — 以菜单的形式显示皮肤名称。

  • Skin List (SkinDropDownButtonItem) — 显示皮肤名称作为一个可滚动的列表,带有一个内置的搜索框,来根据名称定位皮肤。

  • Skin Palette List (SkinPaletteDropDownButtonItem) — 显示当前选定矢量皮肤的调色板。

您可以在代码中修改皮肤选择器,为此使用皮肤选择器的BarCustomContainerItem.ItemLinks集合。

当您创建皮肤选择器(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对象重命名皮肤项。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: DevExpress WinForms是一个功能强大的Windows桌面应用程序开发工具包,它提供了丰富的控件和组件,可以帮助开发人员快速构建高效、美观的应用程序。DevExpress WinForms支持多种数据源,包括数据库、XML、JSON等,可以轻松地实现数据绑定和数据操作。此外,它还提供了丰富的UI设计工具和布局管理器,可以帮助开发人员快速创建出色的用户界面。总之,DevExpress WinForms是一个非常强大的开发工具,可以大大提高开发效率和应用程序的质量。 ### 回答2: DevExpress WinForms是针对Microsoft Windows环境下的本地应用程序设计的框架和工具。它是一个综合的产品,它包含了一个庞大的控件库和一个可扩展的工具集。DevExpress WinForms控件库提供了超过130个控件,每个控件都具有高度的可定制性和灵活性。控件包括数据网格、图表、报表、排列组合框、列表框、日历等等。这些控件的美丽外观、丰富的功能和简单的使用方式为开发人员节省了大量的时间。 DevExpress WinForms控件库采用最新的设计思想和技术,为开发人员提供无与伦比的设计经验和卓越性能。为了支持大规模的应用程序,DevExpress WinForms控件库还提供了强大的数据绑定、多语言支持和多种数据处理功能。DevExpress WinForms控件库还支持多种不同的UI风格,包括Office和Windows 10。 DevExpress还提供了丰富的工具集,帮助开发人员更快地设计、开发和部署应用程序。工具集包括Form Designer、CodeRush、Report Designer、XtraReports、Document Manager和Layout Control等。这些工具使开发人员能够更加快速和高效地开发应用程序。 总之,DevExpress WinForms是一个非常完整的工具集,它提供了大量的控件和工具,这些控件和工具都具有高度的可定制性和灵活性。使用DevExpress WinForms可以大幅度提高开发人员的生产力,在更短的时间内设计和开发更加完美的应用程序。 ### 回答3: DevExpress WinForms 是一个非常强大的开发工具,它可以帮助开发者快速而且高效地构建出现代化的 Windows Form 应用程序。 DevExpress WinForms 提供了大量的控件和工具,如 Ribbon Control、Data Grid、Chart Control、Scheduler Control、Report Designer 等等。这些控件和工具都经过了高度优化和稳定性测试,拥有丰富的特性和功能,方便开发人员快速实现并完善应用程序的各种复杂需求。 DevExpress WinForms 支持多种不同的开发语言,如 C#、VB.NET、F# 等。并且它与 Microsoft Visual Studio 集成非常紧密,可实现 Visual Studio 的设计表单直接与 DevExpressWinForms 控件集成。 通过DevExpress WinForms,开发者可以轻松地创建一个丰富的用户界面,实现各种交互和数据可视化的需求。同时,DevExpress WinForms 还支持强大的数据绑定和数据显示控制,可以快速地实现大量数据的查询、显示和统计。它还提供了强大的数据绑定器类型、数据源控制器、数据过滤器和数据格式化器。这些高级功能使得开发者能够更快地构建出强大的应用程序,同时还能够节省大量的时间和精力。 总体来说,DevExpress WinForms 是一个非常有用而强大的开发工具,它为开发人员提供了丰富的控件、工具和功能,以便更高效和便捷地创建出现代 Windows Form 应用程序。它具有丰富的数据处理功能和快速开发能力,并且支持多种不同的开发语言及平台。无论是开发者还是客户,都将从DevExpress WinForms的功能性上大受益。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值