在Winform开发框架中使用DevExpress的内置图标资源

 在开发Winform程序界面的时候,我们往往会使用一些较好看的图表,以便能够为我们的程序界面增色,良好的图标设置可以让界面看起来更加美观舒服,而且也比较容易理解,图标我们可以通过一些网站获取各种场景的图标资源,不过本篇随笔主要介绍如何利用DevExpress的内置图标资源来实现界面图标的设置。

1、设计时刻的图标处理

丰富的图标处理,在菜单、工具栏、树列表等地方,以及按钮等地方,都可以使用,而这些我们可以利用DevExpress的内置图标选择来减轻我们寻找合适图标的烦恼。

一些按钮、工具栏等的图标设置,一般是固定的,我们往往可以在设计时刻就指定它,这样我们可以使用本地的图标,也可以使用DevExpress的内置图标。而使用DevExpress内置图标资源的时候,我们可以调出DevExpress的内置图标选择框的。

 如下是按钮添加图标方式,操作非常简单,在按钮的右上角小图标上单击一下进入编辑界面,如下所示。

然后选择Image按钮,进入图标选择界面,选择内置的DevExpress图标库即可,基本上,只要是DevExpress的原生控件,那么就可以通过这种内置图标的对话框进行图标选择,非常方便。

 

2、运行时刻的图标处理

上面的操作是在设计时候,DevExpress设计器给我们提供很多便利选择内置图标,而在界面运行时刻,想动态处理界面按钮图标,或者树形菜单的图标的时候,就没有这个直接的接口来设置图标了,而我们框架的菜单往往都是需用动态增加的,因此图标的设置也是在运行时刻的。如下面的树列表中,图标就是动态指定的。

这些动态的树形菜单,是在权限系统里面动态配置的,菜单的配置界面如下所示。

上面的选择图图标就是我们需要动态设置的图标,由于图标资源我们是以图片形式存储在对应的记录里面的,因此使用起来也是比较方便的,我们在配置的时候,获取到对应的图标资源并存储起来即可。

除了上面可以参考从DevExpress内置图标资源获取图标的方式外

我们还可以选择我们自己喜欢的图标资源,也就是从系统图标文件中选择自己喜欢的,如下界面所示。

因此我考虑在运行时刻整合两种不同选择图标的方式。

我们先来看看我整合后的图表选择界面,如下所示,包含了运行时刻提取DevExpress内置图标的功能和从系统文件中选择图标的功能。

 

 3、运行时刻提取DevExpress内置图标的功能实现

 首先我们参考设计时刻的界面展示

来设计一个界面来展示图标信息

 参考原版的界面,设计尽可能贴近即可,另外我们自己加入一个从系统选择图标资源的操作。

至于图标选中后我们返回对应的Image对象给调用者,则通过事件进行处理,以便选中后,即使更新显示效果。

如下所示,我们定义一个委托和事件。

复制代码
    /// <summary>    /// DevExpress图标和系统图标选择窗体     /// </summary>    public partial class FrmImageGallery : BaseForm     {         /// <summary>        /// 自定义一个委托处理图标选择         /// </summary>        public delegate void IconSelectHandlerDelegate(Image image, string name);          /// <summary>        /// 图标选择的事件         /// </summary>        public event IconSelectHandlerDelegate OnIconSelected;          private DXImageGalleryLoader loader = null;          public FrmImageGallery()         {             InitializeComponent();              InitDictItem();//初始化        }                /// <summary>        /// 处理图标选择的事件触发         /// </summary>        public virtual void ProcessIconSelected(Image image, string name)         {             if (OnIconSelected != null)             {                 OnIconSelected(image, name);             }         }
复制代码

然后在内置图标显示中,如果触发图标的单击,我们就触发事件,以便让调用者更新界面显示,如下代码所示。

复制代码
foreach (GalleryItem item in items[key]) {     item.ItemClick += (s, e) =>     {         //选择处理        ProcessIconSelected(item.ImageOptions.Image, item.Description);     }; }
复制代码

而对于从系统文件加载文件进行显示图标的,类似的触发方式。

50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信