如何在c#项目中实现一个winform主题

  介绍

如何在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主题