Dot-Net
當我將 .NET 按鈕的 BackColor 更改回其原始值時,它看起來不再一樣了
我有一個按鈕,我想簡單地“閃爍”以引起使用者的注意。我認為最簡單的方法是將 Button 的
BackColor屬性更改為另一種顏色,然後再將其切換回來。所以我做這樣的事情:this.oldColor = myButton.BackColor; myButton.BackColor = Color.Blue;然後大約 1/2 秒後:
myButton.BackColor = this.oldColor;但是按鈕的背景顏色最終明顯比表單上的其他按鈕更暗!
起初,我認為這是因為按鈕的原始顏色是命名顏色(在本例中為“Control”)有一些特別之處,但事實並非如此。
更糟糕的是,當我
myButton.BackColor在調試器中查看時,我得到了{Name=Control, ARGB=(255, 236, 233, 216)}這是完全正確的!但是當我截屏並檢查顏色時,它與其餘按鈕不一樣!
是否有某種掩蔽發生?或者也許是某種抖動?
我找出了問題的原因。原來還有另一個名為
UseVisualStyleBackColor. 它控制在計算BackColor. 更糟糕的是,一旦你設置了BackColor,它就會設置為false。所以我最終這樣做了:this.oldUseVisualStyleBackColor = myButton.UseVisualStyleBackColor; this.oldColor = myButton.BackColor; myButton.BackColor = Color.Blue;當我準備好重置它時:
myButton.BackColor = this.oldColor; myButton.UseVisualStyleBackColor = this.oldUseVisualStyleBackColor;(是的,您必須先重置
BackColor,然後才能設置UseVisualStyleBackColor。)我不知道為什麼
UseVisualStyleBackColor要使用它,或者它為什麼會這樣做,但它現在似乎可以工作了。(謝謝,馬克!如果沒有你的幫助,我不會找到這個!)