![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
C#です
ピクチャボックスをクリックしたら・・・という動作ができません・・・
宣言等はこのようにしました
for (int i = 1; i <= 25; i++)
{
for (int j = 1; j <= 25; j++)
{
map[i, j] = new PictureBox();
map[i, j].Size = new Size(tate, yoko);
map[i, j].Location = new Point(tate * i + 5 * i, yoko * j + j * 5);//ずらす
map[i, j].BackColor = Color.Black;
map[i, j].Click += new EventHandler(map_click);//マップをクリックした
}
}
map_clickというメソッドにはどのようにかけばいいのでしょうか?
そのピクチャボックスをクリックしたらそのピクチャボックスの背景色を緑色に変える
という風に書きたいのですが・・・・
No.5ベストアンサー
- 回答日時:
こんばんは。
参考程度に。private void Form1_Load(object sender, EventArgs e)
{
for (int i = 1; i <= 25; i++)
{
for (int j = 1; j <= 25; j++)
{
map[i, j] = new PictureBox();
map[i, j].Size = new Size(tate, yoko);//用意する
map[i, j].Location = new Point(tate * i + 5 * i, yoko * j + j * 5);//ずらす
map[i, j].BackColor = Color.Black;
//(2)を使用する為に必要
//http://msdn.microsoft.com/ja-jp/library/system.w …
map[i, j].Tag = Color.Green;
map[i, j].Click += new EventHandler(map_click);//マップをクリックした
this.Controls.Add(map[i, j]);//絶対に必要
}
}
}
以下3つのうちのどれか。
(1)緑色になるだけ。
private void map_click(object sender, EventArgs e)
{
((Control)sender).BackColor = Color.Green;
}
(2)緑色の状態で、もう一回押すと黒色に戻る。
private void map_click(object sender, EventArgs e)
{
Control ctl = sender as Control;
Color cPrev = ctl.BackColor;
ctl.BackColor = (Color)ctl.Tag;
ctl.Tag = cPrev;
}
(3)最後に押されたものだけが緑色になる。
private void map_click(object sender, EventArgs e)
{
Control ctl = sender as Control;
Control ctlPrev = this.Tag as Control;
if (ctlPrev != ctl)
{
this.Tag = ctl;
ctl.BackColor = Color.Green;
if (ctlPrev != null)
{
ctlPrev.BackColor = Color.Black;
}
}
}
No.4
- 回答日時:
一つだけ#1の内容に誤りがあるので訂正しておきます。
> 「フォーカスが離れたら背景色を元に戻す」というイベント
PictureBoxではフォーカス関連のイベントが使えない(=おそらくフォーカス移動そのものが発生しない)ので、「別のところがクリックされたら前回クリックされたところの背景色を戻す」という処理はmap_click内で実施する必要があります。
こちらは「まず全てのPictureBoxの背景色を戻して、クリックされたところだけ改めて緑にする」とすればよいでしょう。
No.3
- 回答日時:
> 質問している意味を分かっていらっしゃいますか?
もちろん。
ですから#1では必要な情報をきちんと出してますよ?
「ハンドラとして登録したメソッドの引数に、イベントを飛ばした(=今回の質問ではクリックされた)オブジェクトがobject型で渡されるからPictureBoxにダウンキャストして背景色をいじればよい」と。
もとの質問が
> map_clickというメソッドにはどのようにかけばいいのでしょうか?
だったのでmap_clickのプロトタイプはわかっているものとして書いてますが、そちらがわかっていないという事でしたらフォームデザイナの機能で適当なフォームにClickイベントを割り当ててみましょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) pythonのmap、結果の利用は1度だけ? 5 2022/06/11 12:33
- X(旧Twitter) Twitterで相手にメッセージを送った際、例えば千葉県と書いたところがリンクありになりました。クリ 1 2023/02/18 06:52
- Google Maps google map経路検索で、進行方向とmapの向きを一致させたい 3 2022/04/10 14:20
- iPhone(アイフォーン) Google map のルート保存について 1 2022/05/13 11:50
- Google Maps iOS でのgoogle map の地図を写真で表示する方法を教えて下さい。 Windows でgo 2 2023/06/02 09:56
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- 英語 We have Lee but you don't have 2 2023/03/13 03:35
- Windows 10 壁紙フォルダが表示されない 1 2022/11/16 21:58
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- 英語 doがあるのとないのでどう違う? 34 2022/10/05 23:29
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
どこにもフォーカスを当てたくない
-
矢印(左右)キーでイベントを...
-
中古本の店名ハンコの消し方
-
酸素ボンベのレギュレーターか...
-
C# ReadOnlyのTextBoxで
-
池袋サンシャイン通りでキャッ...
-
SSTABでのKEYDOWNイベント
-
Verilog HDLで立下りと立ち上が...
-
OPPO A54 5Gを使っています。 ...
-
GridViewでハイライトを使用し...
-
小学校で遊ぶてんかのルールに...
-
他の人には声だして挨拶してる...
-
テキストボックスの入力可/不...
-
コマンドボタンのEnterイベント...
-
テキストボックスの入力チェッ...
-
Flash Professional 2004の使い方
-
テキストボックス入力後、警告...
-
Webデザイン:回る地球儀
-
マウスコンピュータを使用して...
-
ウリナラマンセーというフラッ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
どこにもフォーカスを当てたくない
-
C# ReadOnlyのTextBoxで
-
業務に差し支えのないテンキー...
-
エクセルVBA テキストボックス...
-
他の人には声だして挨拶してる...
-
ユーザーフォームのSetFocusが...
-
矢印(左右)キーでイベントを...
-
コマンドボタンのEnterイベント...
-
GridViewでハイライトを使用し...
-
テキストボックス入力後、警告...
-
VBAでのユーザーフォーム上...
-
Private Sub内でSubをCallしたい
-
フォーカスを移動させない方法
-
小学校で遊ぶてんかのルールに...
-
炊飯器のセットの音と出来上が...
-
Accessの更新後処理で特定の条...
-
VB.NET ボタン押下で一つ前の...
-
『エッジの効いた○○』の意味。
-
油性マジックの消し方
-
タブコントロールのフォーカス...
おすすめ情報