c winform主題實現的方法

2021-10-22 18:35:07 字數 4249 閱讀 3183

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...