在Winform框架界面中改变并存储界面皮肤样式的方法

在本篇介绍的Winform界面样式改变及存储操作中,是指基于DevExpress进行界面样式的变化。一般情况下,默认我们会为客户提供多种DevExpress的界面皮肤以供个人喜好选择,默认DevExpress提供40余种皮肤样式,用户可以根据自己的喜好,选择较为美观、得体的皮肤,为了方便,我们对用户的皮肤选择进行记录,并可以动态改变。

1、界面皮肤的选择

Winform开发框架(包括混合式Winform开发框架)皮肤如下界面所示。

在皮肤集合中打开,可以看到很多界面皮肤可供选择

上面初始化的皮肤代码,是通过调用SkinHelper的DevExpress内在辅助类实现的,通过添加一个RibbonGalleryBarItem控件对象,然后添加如下代码实现的

DevExpress.XtraBars.Helpers.SkinHelper.InitSkinGallery(rgbiSkins, true);

以及在Ribbon控件上添加一个小的皮肤下拉按钮,如下代码所示

this.ribbonControl.Toolbar.ItemLinks.Clear();
this.ribbonControl.Toolbar.ItemLinks.Add(rgbiSkins);

如果我们固定设置界面一种皮肤,那么调用下面的代码直接设置即可,如下所示。

UserLookAndFeel.Default.SetSkinStyle("Office 2010 Blue");

2、界面皮肤的保存和显示

不过,我们如果希望皮肤可以随意更改并可以存储到配置文件中,那么我们就需要对它进行一定的加工处理。

首先我们编写一个设置皮肤名称的函数,如下所示。

/// <summary>
  /// 设置用户界面的皮肤
  /// </summary>
  private void SetSkinStyle()
  {
   //从配置文件读取SkinName的值,如无则使用标准样式
   string skinName = config.AppConfigGet("SkinName");
   skinName = string.IsNullOrEmpty(skinName) ? "Office 2010 Blue" : skinName;

   foreach (GalleryItemGroup group in rgbiSkins.Gallery.Groups)
   {
    foreach (GalleryItem item in group.Items)
    {
     if (string.Concat(item.Tag) == skinName)
     {
      item.Checked = true;
      rgbiSkins.Gallery.MakeVisible(item);
      UserLookAndFeel.Default.SetSkinStyle(skinName);
      return;
     }
     item.Checked = false;
    }
   }
  }

这样我们在皮肤改变后,重新读取配置,并重新设置界面的皮肤即可。

那么我们需要实现RibbonGalleryBarItem控件对象的单击事件GalleryItemClick,

如下代码所示。

rgbiSkins.GalleryItemClick += (object sender, GalleryItemClickEventArgs e) =>
{
 config.AppConfigSet("SkinName", string.Concat(e.Item.Tag));
 SetSkinStyle();
};

这样综合起来就是两个函数代码实现了,如下所示

/// <summary>
  /// 初始化皮肤设置
  /// </summary>
  private void InitSkinStyle()
  {
   //初始化皮肤样式名称
   DevExpress.XtraBars.Helpers.SkinHelper.InitSkinGallery(rgbiSkins, true);
   rgbiSkins.GalleryItemClick += (object sender, GalleryItemClickEventArgs e) =>
   {
    config.AppConfigSet("SkinName", string.Concat(e.Item.Tag));
    SetSkinStyle();
   };
   this.ribbonControl.Toolbar.ItemLinks.Clear();
   this.ribbonControl.Toolbar.ItemLinks.Add(rgbiSkins);
   this.ribbonControl.Minimized = true;//默认最小化
   //UserLookAndFeel.Default.SetSkinStyle("Office 2010 Blue");
   SetSkinStyle();
  }

  /// <summary>
  /// 设置用户界面的皮肤
  /// </summary>
  private void SetSkinStyle()
  {
   //从配置文件读取SkinName的值,如无则使用标准样式
   string skinName = config.AppConfigGet("SkinName");
   skinName = string.IsNullOrEmpty(skinName) ? "Office 2010 Blue" : skinName;

   foreach (GalleryItemGroup group in rgbiSkins.Gallery.Groups)
   {
    foreach (GalleryItem item in group.Items)
    {
     if (string.Concat(item.Tag) == skinName)
     {
      item.Checked = true;
      rgbiSkins.Gallery.MakeVisible(item);
      UserLookAndFeel.Default.SetSkinStyle(skinName);
      return;
     }
     item.Checked = false;
    }
   }
  }

然后在主界面的初始化代码中进行调用即可,同时记得在App.Config文件中增加一个SkinName的配置项,方便程序进行存储皮肤名称。

这样就可以实现我们皮肤的变化及存储功能了,修改皮肤,并重启程序,系统依旧使用保存好的皮肤,功能符合预期。

这个功能不算复杂,提供代码方便大家进行复制使用。

以上这篇在Winform框架界面中改变并存储界面皮肤样式的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 在Winform框架界面中改变并存储界面皮肤样式的方法

    在本篇介绍的Winform界面样式改变及存储操作中,是指基于DevExpress进行界面样式的变化.一般情况下,默认我们会为客户提供多种DevExpress的界面皮肤以供个人喜好选择,默认DevExpress提供40余种皮肤样式,用户可以根据自己的喜好,选择较为美观.得体的皮肤,为了方便,我们对用户的皮肤选择进行记录,并可以动态改变. 1.界面皮肤的选择 Winform开发框架(包括混合式Winform开发框架)皮肤如下界面所示. 在皮肤集合中打开,可以看到很多界面皮肤可供选择 上面初始化的皮肤

  • Winform界面中实现菜单列表的动态个性化配置管理方法

    在我们一般的应用系统里面,由于系统是面向不同类型的用户,我们所看到的菜单会越来越多,多一点的甚至上百个,但是我们实际工作接触的菜单可能就是那么几个,那么对于这种庞大的菜单体系,寻找起来非常不便.因此对菜单的个性化配置就显得尤为重要,本篇随笔就是基于这样的理念,提供用户对可见菜单进行一个动态配置,只选自己喜欢.常用的菜单显示出来即可,菜单的配置存储在数据库里面,在不同的客户端体验都是一样.本篇随笔主要介绍实现这样的功能的一个完整思路,部分代码逻辑可供参考. 1. 菜单列表的动态个性化配置的过程 在

  • 在WinForm应用程序中快速实现多语言的处理的方法

    在国际化环境下,越来越多的程序需要做多语言版本,以适应各种业务需求的变化.在Winform应用程序中实现多语言也有常规的处理方式处理,不过需要针对每个语言版本,重新修改Winform界面的显示,对一些常规的辅助类,也需要引入一个统一的资源管理类来处理多语言的问题,相对比较繁琐.本篇随笔针对多语言的需求,希望尽量避免繁琐的操作,既能符合本地语种开发人员的开发习惯,又能快速实现Winform程序的多语言场景处理. 1.多语言开发的困惑和思路 在常规的多语言版本程序中,开发总是伴随着很多不愉快的事情,

  • js改变鼠标的形状和样式的方法

    当今多数浏览器支持一下指针样式(将鼠标移动到样式名称上以观察指针样式改变为那个样式): auto move no-drop col-resize all-scroll pointer not-allowed row-resize crosshair progress e-resize ne-resize default text n-resize nw-resize help vertical-text s-resize se-resize inherit wait w-resize sw-re

  • 在IIS中改变ASP.NET程序版本的实现方法附批处理代码

    在windows2003的iis6.0当中,在装过.NETFRAMEWORK1.1,和.NETFRAMEWORK2.0之后,在新建的ASP.NET应用程序中,查看属性,会出现ASP.NET的选项卡,在此可以更改该WEB应用程序是基于哪个框架运行的. 但是最近在装了64位的WINDOWSXP PROFESSIONAL后,找不到此选项卡了,只能通过如下方式修改: 在IIS管理器中,选择指定的WEB应用程序,右键-->属性-->configuration-->mapping-->根据需要

  • 详解iOS App开发中改变UIButton内部控件的基本方法

    UIButton内部默认有个UIImageView.UILabel控件,可以分别用下面属性访问: 复制代码 代码如下: @property(nonatomic,readonly,retain) UIImageView *imageView; @property(nonatomic,readonly,retain) UILabel     *titleLabel; UIButton之所以能显示文字,完全是因为它内部的titleLabel也,也就是说,UIButton的setTitle:forSta

  • C#中改变DataGridView控件边框颜色的方法

    DataGridView是Visual Studio中一个最重要的数据控件.它可以应用在大多数场合,功能强大,使用灵活.本文要重点介绍一下,如果设置DataGridView的边框颜色. 比尔盖次说"Apple机上没有哪一个软件我是觉得应该是微软首创的",这说明盖次对微软软件功能强大的自信心.而乔布斯而说,微软的软件毫无艺术感可言!这说明什么,说明微软的东西--丑! 乔帮主不愧是乔帮主,真是入木三分,直中要害!是的,默认情况下的DataGridView,真是丑!尤其是那个黑色的边框,不是

  • Winform界面中实现通用工具栏按钮的事件处理方法

    在一个给客户做的项目中,界面要求修改增加通用工具栏按钮的事件处理,也就是在主界面中放置几个固定的功能操作按钮,打开不同的页面的时候,实现对应页面的功能处理,这种和我标准的界面处理方式有所不同,标准的列表界面,一般在界面中放置了一些常规的按钮,如查询/更新.新建.编辑.删除.导入.导出等常规操作,现在是需要把这些提升到主界面的层次上放置按钮,这种处理方式也算是提供一种方便吧.本篇随笔介绍实现这个功能的思路和代码实现逻辑. 1.界面功能介绍 这里要实现的通用工具栏按钮的事件处理,具体的界面是这样的,

  • JS 实现获取打开一个界面中输入的值

    需求在一个界面中打开另一个界面,通过JS获取在另一个界面中用户输入的值.示例:Index.html 复制代码 代码如下: <html> <head> <meta http-equiv="content-type" content="text/html; charset=gbk"> <title>主页</title> <script type="text/javascript">

  • 在winform下实现左右布局多窗口界面的方法

    在web页面上我们可以通过frameset,iframe嵌套框架很容易实现各种导航+内容的布局界面,而在winform.WPF中实现其实也很容易,我这里就分享一个:在winform下实现左右布局多窗口界面. 我这里说的多窗口是指一个父窗口包含多个子窗口,在winform中实现这种效果很简单,即将某个窗口的IsMdiContainer设为true,然后将其它子窗口的MdiParent设为其父窗口对象即可,这样就完成了一个多窗口界面,效果如下: 点击NEW新打开一个窗口,其效果如下: 请看我上图红色

随机推荐