2011-07-20 43 views
0

當我禁用VS2008 Winforms項目中的某些按鈕控件時,出現了一些不一致的行爲。Winforms控件 - 當Enabled = false時爲什麼文本不會灰色?

當我設置Enabled = false時,按鈕被禁用,但某些(儘管不是全部)按鈕的文本保持黑色。

我希望所有按鈕在禁用時都顯示灰色文本 - 這使用戶更容易看到按鈕被禁用。

似乎更容易發生如果按鈕被放置在一個GroupBox,但我不知道這總是如此。

我猜測Button和/或包含它的Form或GroupBox的某些屬性組合導致了這一點,但我看不到任何合理的模式。

編輯:我們有我們自己的外觀和感覺,並將含有表單的BackColor設置爲不同的顏色。

任何人都可以解釋爲什麼這可能會發生?

+0

你可以發送一些示例項目,這個問題在哪裏?我無法重現此行爲。 – TcKs

+0

我可以試試。我將如何將它發送給你? –

+0

明顯的修復方法是使用默認的系統主題。它們總是可以正確繪畫,它們可以由用戶自定義,並且對用戶來說很舒服/熟悉。手動改變顏色從來沒有任何藉口。 –

回答

-1

問題是因爲表單的BackColor被設置爲不同的顏色。

一些谷歌搜索顯示,許多其他人都遇到過這種情況。提出的解決方案是非常複雜的 - 繼承自己的按鈕控件和壓倒一切的OnPaint等

但事實證明,有一個簡單的解決...

當您添加的按鈕到窗體,按鈕的背景色屬性將設置爲與窗體的BackColor相同的值,雖然它不會在設計或運行時以這種方式顯示而不是

如果設置按鈕的背景色屬性爲系統 - > ControlLight,它會解決這個問題 - 殘疾人按鈕現在看起來禁用。

請注意,重置BackColor時會出現一個奇怪的怪癖 - UseVisualStyleBackColor屬性將從True更改爲False。但是這似乎沒有效果,並且可以在不影響外觀的情況下改回True。

相關問題