#region using CSFrameworkV5.Business; using CSFrameworkV5.Core; using DevExpress.LookAndFeel; using DevExpress.Skins; using DevExpress.XtraBars; #endregion namespace CSFrameworkV5.Library.CommonClass { /// /// 设置皮肤工具. Last Modified: 2018-10-06 /// public class SkinTools { //当前皮肤列表组件(对应frmMain界面的皮肤列表) private static BarLinkContainerItem _CurrentRibbonSkinList; /// /// 获取系统当前皮肤名称 /// /// public static string GetCurrentSkinName() { var defName = UserLookAndFeel.Default.SkinName; if (string.IsNullOrWhiteSpace(SystemSettings.Current.SkinName)) return defName; return SystemSettings.Current.SkinName; } /// /// /重新加载皮肤列表 /// /// 当前皮肤列表组件 /// 勾选当前皮肤 public static void LoadSkinList(BarLinkContainerItem owner, bool checkCurrent = true) { _CurrentRibbonSkinList = owner; //读取预设的皮肤名称 var currentName = GetCurrentSkinName(); //重新加载皮肤列表 owner.ItemLinks.Clear(); foreach (SkinContainer skin in SkinManager.Default.Skins) { var item = new BarCheckItem(owner.Manager); item.Caption = skin.SkinName; item.Checked = checkCurrent && skin.SkinName == currentName; //打勾 item.ItemClick += OnSetSkinClick; owner.ItemLinks.Add(item); } } /// /// 设置皮肤 /// /// /// private static void OnSetSkinClick(object sender, ItemClickEventArgs e) { SetSkin(e.Item.Caption); if (_CurrentRibbonSkinList != null) foreach (BarItemLink item in _CurrentRibbonSkinList.ItemLinks) if (item.Item is BarCheckItem) (item.Item as BarCheckItem).Checked = false; (e.Item as BarCheckItem).Checked = true; } /// /// 设置皮肤,并且保存配置。 /// /// public static void SetSkin(string skinName) { UserLookAndFeel.Default.SetSkinStyle(skinName); //设置主题样式 //保存到数据库 CommonData.PostUserSettings(Loginer.CurrentUser, "SkinName", skinName); //同步更新全局变量 SystemSettings.Current.SkinName = skinName; //保存到ini UserConfig.Current.SkinName = skinName; UserConfig.Current.Save(); } /// /// 给Gallery组件当前皮肤名称设置焦点(选择状态) /// /// Gallery组件 /// 皮肤名称 public static void SetSkinGalleryCheck( RibbonGalleryBarItem ribbonGallary, string skinName) { var list = ribbonGallary.Gallery.GetAllItems(); if (list != null) { var item = list.Find(e => e.Tag.ToStringEx() == skinName); //找出当前皮肤 if (item != null) ribbonGallary.Gallery.SetItemCheck(item, true); //设置焦点(选择状态) } } public static void SetSkinItemCheck(string skinName) { if (_CurrentRibbonSkinList == null) return; foreach (BarCheckItemLink item in _CurrentRibbonSkinList.ItemLinks) (item.Item as BarCheckItem).Checked = item.Caption == skinName; } } }