介绍
如何在c#项目中实现一个winform主题?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
1,一个接口,需要做主题的控件,窗体都要实现这个接口
///, & lt; summary> ,///使用主题的控件,窗体需要实现此接口 ,///& lt;/summary> public interface IThemeControl ,{ ITheme 才能;ThisTheme {组,得到,,,}///才能,& lt; summary>///才能,重置主题///才能,& lt;/summary> void 才能ResetTheme (); 以前,}>2,一个主题接口
///, & lt; summary> ,///主题 ,///& lt;/summary> public interface ITheme ,{ int 才能;Code {,得到;}///才能,& lt; summary>///才能,初始化///才能,& lt;/summary> void 才能Init (); 以前,}>3,一个主题控制类
///, & lt; summary> ,///主题设置 ,///& lt;/summary> ,public class 主题 ,{ internal 才能delegate void  CheckedThemeEventHandle (ITheme 主题);///才能,& lt; summary>///,才能改变主题事件///才能,& lt;/summary> static 才能internal event  CheckedThemeEventHandle CheckedThemeEvent; static 才能;ITheme  currentTheme;///才能,& lt; summary>///才能,当前主题///才能,& lt;/summary> internal 才能;static  ITheme CurrentTheme {才能 ,,get {currentTheme;, return } ,, ,,{ ,,,if (value ==, null) ,,,,返回; ,,,currentTheme =,价值; ,,,currentTheme.Init (); ,,,if (CheckedThemeEvent !=, null) ,,,{ ,,,,CheckedThemeEvent(价值); ,,,} ,,} ,,}///才能,& lt; summary>///,才能加载控件的主题///才能,& lt;/summary>///才能,& lt; param name=癱ontrol"祝辞& lt;/param> internal 才能static void  LoadTheme (IThemeControl 控制) {才能 ,,control.ResetTheme (); ,,} 以前,}>4,添加一个窗体通用的主题接口
public interface IThemeBaseForm ,{///才能,& lt; summary>///才能,基本窗体背景色///才能,& lt;/summary> Color 才能;BaseFormBackgroundColor {,得到;}///才能,& lt; summary>///才能,基本窗体文字颜色///才能,& lt;/summary> Color 才能;BaseFormForeColor {,得到;}///才能,& lt; summary>///才能,标题栏颜色///才能,& lt;/summary> Color 才能;BaseFormTitleColor {,得到;} 以前,}>5,添加对应的窗体或控件的主题接口
窗体的样式接口(例子)
public interface IThemeFrmLock : IThemeBaseForm ,{ Color 才能;FrmLock_TxtFillColor {,得到;} Color 才能;FrmLock_TxtRectColor {,得到;} Color 才能;FrmLock_TxtForeColor {,得到;} Color 才能;FrmLock_btnFillColor {,得到;} Color 才能;FrmLock_btnForeColor {,得到;} Color 才能;FrmLock_btnRectColor {,得到;} 以前,}>控件的样式接口(例子)
public interface IThemeUCFileItem : ITheme ,{ Color 才能;UCFileItem_BackgroundColor {,得到;} Color 才能;UCFileItem_ForeColor {,得到;} Color 才能;UCFileItem_BoxColor {,得到;} Image 才能;UCFileItem_Img1 {,得到;} Image 才能;UCFileItem_Img2 {,得到;} Image 才能;UCFileItem_Img3 {,得到;} Image 才能;UCFileItem_Img4 {,得到;} Image 才能;UCFileItem_Img5 {,得到;} 以前,}>我这里做一个深色一个浅色主题
深色的
///, & lt; summary> ,///深色 ,///& lt;/summary> ,public partial  class Dark : ITheme才能, IThemeBaseForm才能,,, IThemeFrmLock才能,,, ,,IThemeUCFileItem ,{ public 才能int Code  {, get {1;, return },}///才能,& lt; summary>///才能,基本窗体背景色///才能,& lt;/summary> public 才能Color BaseFormBackgroundColor  {, get {, return Color.FromArgb(37岁,41岁,59),,},}///才能,& lt; summary>///才能,基本窗体文字颜色///才能,& lt;/summary> null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null如何在c#项目中实现一个winform主题