お世話になっております。VB2005を最近かじりました。
フォーム上にボタンが100個ほど並んでいます。
グローバル変数としてboolean型のフラグを立てて、
ボタンを押したらボタンの色がピンクに、もう一度押したら元の色にという
ごく簡単なプログラムを書きたいのですが、
1個のボタンごとに
Private Flag as Boolean
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Select Case Flag
Case False
Button1.BackColor = Color.Pink
Flag = True
Case True
Button1.BackColor = Color.FromKnownColor(KnownColor.ControlLight)
Flag = False
End Select
End Sub
というプログラムを書くと100個同じようなプログラムを書かなくてはいけなくなり、大変手間がかかりメンテも大変です。
もっと簡単にする方法があったら教えていただきたく存じます。
No.3ベストアンサー
- 回答日時:
こんにちは。
コントロールを配列で管理する方法もあります。
コントロールを配列で管理する
http://vbdotnet.fc2web.com/vbnet/control/Control …
ここが参考になります。
上記の配列に格納する部分ですが、100個もやるのは大変なので
For I = 0 To 99
btnArray(I) = Me.Controls("Button" & I)
Next
とするといいでしょう。(ボタン名は変更していないとします。)
それから、イベントハンドルの登録をこのループに入れるといいでしょう。
どうでしょうか。
No.2
- 回答日時:
ちょっとだけ簡単に
(コードはボタン2個です)
Private Flag(2) As Boolean
Private Sub Buttons_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles Button1.Click, Button2.Click
Dim btn As Button
Dim strNo As String
Dim iNo As Integer
btn = CType(sender, Button) 'イベント発生元のボタン情報を取得
strNo = Microsoft.VisualBasic.Mid(btn.Name, 7)
iNo = CInt(strNo)
Select Case Flag(iNo)
Case False
btn.BackColor = Color.Pink
Flag(iNo) = True
Case True
btn.BackColor = Color.FromKnownColor(KnownColor.ControlLight)
Flag(iNo) = False
End Select
End Sub
No.1
- 回答日時:
とりあえず質問文のコードから解釈し、Flag 変数は全てのボタンで共有する理解で。
簡単に済ますなら全てのボタンの Click イベントを 1つのプロシージャに関連付けちゃう。
Private Sub Button_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
って行の Handles から後ろを
Handles Button1.Click, Button2.Click, Button3.Click ・・・ Button100.Click
とする。
次にボタンの色を変えているところを
CType(sender, System.Windows.Forms.Button).BackColor = Color.Pink
のようにする。
って線でどうでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA(エクセル)で自動的にボタン...
-
VBA シートのボタン名を変更し...
-
ユーザーフォームに別シートか...
-
コマンドボタンやイメージにマ...
-
フォームの再読み込み
-
Excel VBA Application.caller...
-
[Excel VBA]コマンドボタンの入...
-
VBA CommandButtonの文字ずれ
-
VB.NETです ラジオボタンの文...
-
ボタンの状態
-
VBAのボタンの位置が変わって困...
-
MouseDownとMouseMoveイベント...
-
VBAで多数のプログラムを一つの...
-
CommandButtonのCaptionを変化...
-
マクロでタイムレコーダーを作...
-
ボタン
-
セルをマクロのボタンにしたい。
-
コマンドボタンの文字色
-
エクセル オプションボタン ...
-
VBAでオプションボタンによって...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA シートのボタン名を変更し...
-
VBA(エクセル)で自動的にボタン...
-
ユーザーフォームに別シートか...
-
VBA CommandButtonの文字ずれ
-
フォームの再読み込み
-
アイコンとボタンの違い
-
VBAのボタンの位置が変わって困...
-
閉じると「+」になり開くと「-...
-
Excel VBA Application.caller...
-
Access VBA でデータペーストを...
-
セルをマクロのボタンにしたい。
-
コマンドボタンやイメージにマ...
-
VBAでオプションボタンによって...
-
ボタンをマウスで押し続けたと...
-
[Excel VBA]コマンドボタンの入...
-
VBA IE ダウンロード ダイアロ...
-
プロシージャからイベントをコ...
-
チェックボックスで指定出来る...
-
+ボタンの名称は?
-
VBA でのボタンの移動について
おすすめ情報