WindowsフォームでCheckBoxを複数配置し
それぞれのNameをChk0,Chk1,Chk2....のようにしました。
これをfor文を使ってtrueかfalseか判別を行いたいのですが、
数字の部分を変数に置き換えるような方法はありますか?
よろしくお願いします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答4件
0
C#
1private void button1_Click(object sender, EventArgs e) 2{ 3 var checkBoxes = Controls 4 .OfType<CheckBox>() 5 .ToList(); 6 foreach (var checkBox in checkBoxes) 7 { 8 Console.WriteLine($"{checkBox.Name}.Checked is {checkBox.Checked}"); 9 } 10}
これを試してみてください。出力ウィンドウに出力されます。
投稿2019/10/15 02:56
総合スコア28669
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
ベストアンサー
更なる別解です。コントロールの名前(本質問の場合、"Chk1", "Chk2"...)で探せるので、名前をループで動的に生成して目的を達することもできます。
DOBON.NET - フォームに配置されているコントロールを名前で探す
C#
1private void button1_Click(object sender, EventArgs e) 2{ 3 // CheckBoxは4つ存在するとして 4 for (int i = 1; i <= 4; i++) 5 { 6 var name = $"Chk{i}"; 7 Control[] cs = this.Controls.Find(name, false); 8 if (cs.Length > 0 && cs[0] is CheckBox) 9 { 10 System.Diagnostics.Debug.WriteLine($"{name} - Checked=" + ((CheckBox)cs[0]).Checked); 11 } 12 } 13} 14/* デバッグ出力ウィンドウに、下のように出力される。 15Chk1 - Checked=True 16Chk2 - Checked=True 17Chk3 - Checked=False 18Chk4 - Checked=False 19*/
投稿2019/10/15 03:10
総合スコア9254
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/15 04:18 編集
2019/10/15 04:50
2019/10/15 05:04
2019/10/15 05:18
0
複数個のコントロールを走査したいなら
こんな感じでループ書くとか
foreach( var CB in new CheckBox[]{ Chk0, Chk1, Chk2 } ) { ... }
投稿2019/10/15 02:53
総合スコア11985
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。