お世話になります、初心者のSomeです。
Vb2008でFormにボタンを貼り付けて、クリックするたびにON/OFF動作をさせます。
この時、ボタンの色(BackColor)をON状態で変更し、OFFになったら元の色(デフォルト色)
に戻したいと思っています。
この時、BackColorプロパティには何を設定したらよいのでしょうか。
"White"も違うし、"LightGray"も違う気がします。
デザイン画面でプロパティを見ると「システムのControl」と言う設定になっています。
よろしくお願いします。
.
SystemColors.Control です。
aetosさん、早速のお返事をありがとうございました。
教えていただいた "SystemColors.Control" を試したところ、うまくデフォルト色に
戻りました。ありがとうございました。
でも、コードを記述しているときのコードスニペットにはこの候補は表示されませんね。
どうしてなんでしょうか?
推奨されないと言うことなんでしょうか??
.
> ボタンを貼り付けて、クリックするたびにON/OFF動作をさせます。
On/Off 制御を行うのであれば、本来は Button の仕事では無く、
Appearance = Button に設定した RadioButton / CheckBox の範疇かと。
> BackColorプロパティには何を設定したらよいのでしょうか。
初期値に戻す場合は、Button1.BackColor = Color.Empty です。
あるいは、Button1.ResetBackColor() でも OK。
そのほか、UseVisualStyleBackColor プロパティにも注意が必要かと。
> でも、コードを記述しているときのコードスニペットにはこの候補は表示されませんね。
> どうしてなんでしょうか?
Dim txt As String
txt = System.Environment.NewLine
System.Environment.NewLine は入力候補には出ません。
SystemColors.Control は定数ではありませんし、
BackColor プロパティも独自の Color 構造体を
定義して設定できるので当然のことだと思います。
入力候補を網羅することは馬鹿げていると思います。
Control.DefaultBackColor でもいいんでしょうかね。
> 初期値に戻す場合は、Button1.BackColor = Color.Empty です。
これ、ドキュメントにありました?
魔界の仮面弁士さん、特攻隊長まるるうさん、レスをありがとうございました。
SystemColors.ControlでもColor.EmptyでもResetBackColor()でも同様の効果が得られました。
その中で、Color.Emptyはコードスニペットの候補に出現しますね。
皆さん、ありがとうございました。
.
> 同様の効果が得られました。
似ていますが、aetos さんの方法と私の方法は異なる結果となります。
BackColor はアンビエント プロパティなので、親の色を受け継ぎます。
(Font プロパティもアンビエントです)
デザイナ上は、初期値が SystemColors.Control であるように見えますが、
それは Form の背景色が SystemColors.Control であるためです。
たとえば、背景色を黄色にした Panel の上に Button を配置した場合、
ボタンの色も黄色になります(UseVisualStyleBackColor = False)。
また、この状態で Panel の色を変えれば、Button の色も変わります。
ただし、Button に背景色が設定されている場合は、そちらが優先されます。
親の色を引き継ぐのは、ボタンの背景色が未設定の時のみです。
ResetBackColor や Color.Empty による初期値リセットというのは、
この「未設定状態」に戻すことを意味します。
アプリの仕様によっては、aetos さんの方法と私の方法とで
異なる結果となりえますので、注意してくださいね。
> その中で、Color.Emptyはコードスニペットの候補に出現しますね。
IntelliSense ではなく?
コードスニペットって、[?] + [Tab] や右クリックの「スニペットの挿入」で選択する機能ですよね。
魔界の仮面弁士 さん、おはようございます。
なるほど、よくわかりました。
丁寧な解説をありがとうございました。
> > その中で、Color.Emptyはコードスニペットの候補に出現しますね。
> IntelliSense ではなく?
失礼いたしました。
# 書き忘れ。m(_ _)m
》aetos さん
>> 初期値に戻す場合は、Button1.BackColor = Color.Empty です。
> これ、ドキュメントにありました?
BackColor と Color.Empty の関係については、
下記の「解説」の項が参考になるかと思います。
http://msdn.microsoft.com/ja-jp/library/system.componentmodel.ambientvalueattribute.aspx
なるほど。
お恥ずかしながら、アンビエント プロパティなるものを知りませんでした。
弁士さんに感謝です。
ツイート | ![]() |