DOBON.NET DOBON.NETプログラミング掲示板過去ログ

ボタンの背景色を変えるには?

環境/言語:[XP Home C#]
分類:[.NET]

以下で作ったボタンの背景色を変更しようと思っています。

http://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=al2&namber=6634&rev=&no=0

ところが、btnDynamicButtons[0]_MouseHover(object sender, EventArgs e)の
イベントが働きません。

antさんが、おっしゃっているように 
>ボタンの名前でアクセスしたいとなると、リフレクションなどを駆使して
ということになるのでしょうか。

リフレクションなど聞いたことがないので、さっぱり分かりませんが
よろしくお願いします。
■No6828に返信(トコトンさんの記事)
すみません。質問がおかしくなっていました。

btnDynamicButtons[0]_MouseHover は,なんとか動作するように
なりました。そこで,次の

btnDynamicButtons[0].BackColor = Color.Red

としたときに,背景色が変わってくれないのです。
原因が分からず,困っています。
2004/10/20(Wed) 11:37:57 編集(投稿者)

■No6842に返信(トコトンさんの記事)
> btnDynamicButtons[0].BackColor = Color.Red
>
> としたときに,背景色が変わってくれないのです。
> 原因が分からず,困っています。

btnDynamicButtons[]が、Buttonコントロールでインスタンス複製された配列だとすると、
FlatStyleがSystemになってるとか?
Busyな処理をしていて、再描画できていないとか。
> btnDynamicButtons[0]_MouseHover は,なんとか動作するように
> なりました。そこで,次の
>
> btnDynamicButtons[0].BackColor = Color.Red
>
> としたときに,背景色が変わってくれないのです。
> 原因が分からず,困っています。

これはマウスカーソルがボタンの上に乗ったときに、背景色を
変えたいということなのでしょうか?
それでしたら、次のようにすれば、いいと思うのですが、
見当違いだったらすいません。

イベントは各ボタンに登録しておくので
btnDinamicButtons[i*10 + j].MouseHover += new EventHandler(buttons_MouseHover);
のように生成時にでも登録しておきます。
あとはbuttons_MouseHoverを次のように定義しておけばいいかと。

private void buttons_MouseHover(object sender, EventArgs e)
{
   ((Button)sender).BackColor = Color.Red;
}
antさんの以下の方法でできました。
>    ((Button)sender).BackColor = Color.Red;

 さあ、これで後は単純な繰り返しでこのソフトは完成です。
初めて取り組んだプログラミングが、なんとか目途が立ったので
とてもうれしいです。

java.lang.Nullpo さん、antさん、本当にありがとうございました。
これからも、よろしくお願いします。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板