2015-06-26 42 views
0

我一直在尋找並找不到解決方案。MetroStyleManager更改內容的主題,但不是表單的主題

我有一個按鈕,我MetroForm和on_click它執行以下操作:

metroStyleManager.Theme = metroStyleManager.Theme == MetroThemeStyle.Light ? MetroThemeStyle.Dark : MetroThemeStyle.Light; 

我也有一個白色的圖像作爲背景,我的財產AllowImageInvert設置爲True但是當我真正按一下按鈕它改變了形式中所有內容的主題,而不是實際形式的主題。

所以,我想加入這一行的代碼:

this.Theme = metroStyleManager.Theme; 

,但它似乎總是一個落後。

所以我點擊按鈕,內容的主題是Dark而表單主題是Light。再次單擊將內容的主題更改爲Light,表單主題更改爲Dark。我把它設置成可以正常工作的示例項目。

有什麼建議嗎?

謝謝!

+0

我曾經面臨過這樣的問題。從來沒有真正費心去研究它。我最終手動設置了表單的主題。也許這是一個錯誤?我猜這是怎麼回事 –

回答

1

經過數小時的試驗和錯誤,我終於修好了。

希望這可以幫助任何有此問題的人。

我終於將此添加到代碼的末尾:

this.Refresh(); 

所以最終的代碼如下所示:

private void mtleSwitchTheme_Click(object sender, EventArgs e) 
{ 
    metroStyleManager.Theme = metroStyleManager.Theme == MetroThemeStyle.Light ? MetroThemeStyle.Dark : MetroThemeStyle.Light; 
    this.Theme = metroStyleManager.Theme; 
    this.Refresh(); 
} 
+1

它的功能是它不像VS中的普通GUI那樣自動刷新。這就是爲什麼你需要「This.Refresh();」 – VargaDev