winform的主題實現沒有bs裡面那麼舒服,下面做了乙個簡單實現,記錄一下。
1、乙個介面,需要做主題的控制項、窗體都要實現這個介面
///
/// 使用主題的控制項、窗體需要實現此介面
///
public
inte***ce
ithemecontrol
///
/// 重置主題
///
void
resettheme()
;}
2、乙個主題介面
///
/// 主題
///
public
inte***ce
itheme
///
/// 初始化
///
void
init()
;}
3、乙個主題控制類
///
/// 主題設定
///
public
class
theme
set}
}///
/// 載入控制項的主題
///
///
internal
static
void
loadtheme
(ithemecontrol control)
}
4、新增乙個窗體通用的主題介面
public
inte***ce
ithemebaseform
///
/// 基本窗體文字顏色
///
color baseformforecolor
///
/// 標題欄顏色
///
color baseformtitlecolor
}
5、新增對c#教程應的窗體或控制項的主題介面
窗體的樣式介面(例子)
public
inte***ce
ithemefrmlock
:ithemebaseform
color frmlock_txtrectcolor
color frmlock_txtforecolor
color frmlock_btnfillcolor
color frmlock_btnforecolor
color frmlock_btnrectcolor
}
控制項的樣式介面(例子)
public
inte***ce
ithemeucfileitem
:itheme
color ucfileitem_forecolor
color ucfileitem_boxcolor
image ucfileitem_img1
image ucfileitem_img2
image ucfileitem_img3
image ucfileitem_img4
image ucfileitem_img5
}
我這裡做乙個深色乙個淺色主題
深色的
///
/// 深色
///
public
partial
class
dark
:itheme
, ithemebaseform,
ithemefrmlock,
ithemeucfileitem }
///
/// 基本窗體背景色
///
public
color baseformbackgroundcolor
}///
/// 基本窗體文字顏色
///
public
color baseformforecolor
}public
color baseformtitlecolor
}///
/// 初始化操作
///
public
void
init()
#region 重寫運算子
///
/// 重寫==
///
///
///
///
public
static
bool
operator==(
dark lhs,
itheme rhs)
else
return
false;}
}///
/// 重寫!=
///
///
///
///
public
static
bool
operator!=(
dark lhs,
itheme rhs)
else
return
true;}
}public
override
bool
equals
(object obj)
if(obj is itheme)
else
}public
override
intgethashcode()
#endregion
}
淺色的也一樣 只需要實現
itheme,
ithemebaseform,
ithemefrmlock,
ithemeucfileitem
這些介面就行(定義的控制項介面,這裡都要進行實現)
然後新增具體的控制項主題實現類
///
/// frmlock
///
public
partial
class
dark
}public
color frmlock_txtrectcolor
}public
color frmlock_txtforecolor
}public
color frmlock_btnfillcolor
}public
color frmlock_btnforecolor
}public
color frmlock_btnrectcolor
}}
然後就是去控制項或窗體裡面做事情了,實現介面theme.ithemecontrol,建構函式裡面新增checkedthemeevent事件
public
partial
class
frmlock
:frmwithtitle
,theme.ithemecontrol
catch
(exception ex)
}void
theme_checkedthemeevent
(theme.itheme theme)
}
visiblechanged事件新增內容
private
void
frmlock_visiblechanged
(object sender,
eventargs e)
}
實現的介面
theme.itheme thistheme =
null
;///
/// 當前頁面正在使用的主題
///
public
theme.itheme thistheme
return thistheme;
}set}}
public
void
resettheme()
以上就是修改**,下面看呼叫
theme.theme.currenttheme =
newtheme.dark()
;
效果
以上就是c# winform主題實現的方法的詳細內容
C WinForm退出方法
1.this.close 只是關閉當前視窗,若不是主窗體的話,是無法退出程式的,另外若有託管執行緒 非主線程 也無法乾淨地退出 4.system.environment.exit 0 這是最徹底的退出方式,不管什麼執行緒都被強制退出,把程式結束的很乾淨。1.this.close 只是關閉當前視窗,若...
C WinForm程式退出的方法
1.this.close 只是關閉當前視窗,若不是主窗體的話,是無法退出程式的,另外若有託管執行緒 非主線程 也無法乾淨地退出 4.system.environment.exit 0 這是最徹底的退出方式,不管什麼執行緒都被強制退出,把程式結束的很乾淨。1.this.close 只是關閉當前視窗,若...
C (WinForm)實現軟體註冊
c winform 實現軟體註冊 view code using system using system.collections.generic using system.linq using system.text using system.management namespace softreg...