Dot-Net

如何重置為預設按鈕背景色?

  • May 13, 2012

我正在嘗試按鈕背景顏色的不同選項,並最終更改BackColor了外觀類別中的屬性。然後我將它改回預設狀態,即Control,但它看起來仍然與其他按鈕不同:

按鈕截圖

我已經嘗試建構項目並重新啟動 Visual Studio,但它沒有幫助。

我知道我可以拖動另一個按鈕並複制/粘貼程式碼,但首先是什麼導致了這種情況以及如何正確修復它?

預設情況下,該BackColor屬性是環境屬性,這意味著它從其父控制項繼承其值。當您將其顯式設置為特定值時,它會覆蓋環境性質並強制它使用該特定值。

標準的 Windows 按鈕控制項不支持自定義顏色,因此 WinForms 實際上會自定義繪製控制項以允許設計者覆蓋其顏色。這樣,如果你想要一個醜陋的綠色或紅色按鈕,你可以這樣做。

這裡發生的事情是您已經為按鈕控制項有效地設置了自定義背景顏色(您將其設置為 3D 控制項的背景顏色,但它也可以很容易地變成紫色),這迫使 WinForms 自定義繪製控制項並用您指定的顏色繪製其背景。這就是賦予它“平坦”外觀的原因 - 背景顏色現在使用單一自定義顏色繪製,而不是使用預設的漸變效果。在 Windows Classic(Aero 之前)主題下它不會那麼明顯,因為按鈕實際上用平面 3D 控制顏色繪製的。但是 Aero 添加了漸變和其他“熱”效果,這使得它像拇指酸痛一樣突出。

要清除您設置的值並恢復屬性的環境特性,您可以在“屬性”視窗中右鍵點擊該屬性,然後選擇“重置”。您也可以通過程式碼將屬性設置為default(Color)

myButton.BackColor = default(Color);

您還需要將UseVisualStyleBackColor屬性設置回,每當更改屬性以支持自定義背景顏色時true,它都會自動設置為。false``BackColor

或者,您可以告訴 WinForms 完全忽略這樣的自定義屬性,並要求 Windows 繪製按鈕控制項。通過將FlatStyle屬性設置為 來做到這一點FlatStyle.System

同樣,這可以在設計器中或通過程式碼完成。這不僅可以防止您更改背景顏色等愚蠢的東西,創建一個醜陋的控制項,而且還可以將 Win32 按鈕控制項的本機行為恢復到您的 WinForms 應用程序,包括懸停時微妙的 Aero 淡入淡出效果。

我不知道為什麼這不是預設設置。您應該提出特殊要求才能獲得醜陋和非標準的控制項。這不應該只是自動發生。我只能假設這是對 VB 6 程序員的讓步,他們多年來一直能夠製作各​​種醜陋的控制項。

引用自:https://stackoverflow.com/questions/10569200