LoginSignup
0
1

More than 3 years have passed since last update.

Windows Formで沢山あるラジオボタンの任意の一つを選択状態にするド素人的解決

Last updated at Posted at 2020-07-14

最近C#の勉強をしなければならなくなって,以前にhtaで書いたソフトウェアをC#+Windows Formで作り直すってやってんだけど,「コードで複数のラジオボタンの一つをチェック状態にする」ってのがもう全然判らなくて2日ほど嵌ってしまった。
いやまあラジオボタンにチェック付けるだけなら

ラジオボタン名.Checked = true

でええんやけど,そうではなく.
例えば10個あるラジオボタンのn番目にチェックを付けたいって時のやり方がGoogleっても全然出てこないのよ.
最初は

グループ名.Controls[n].Checked = true

でいけるやろ? と思ったんだけど,Controls[n]のプロパティに「Checked」が無いでやんの(´・ω・`).
まあControlsに含まれるのはラジオボタンとは限らんもんな……
じゃあOfTypeでラジオボタンだけフィルタすればよくない?と思いついて

グループ名.Controls.OfType<RadioButton>()[n].Checked = true

ってやってみるも「角かっこ[]付きのインデックスを'IEnumerable'型の式に適用することはできません」ってエラー.なんでや!
そして,2日間いろいろ試行錯誤してようやくたどり着いたのがこれ↓

グループ名.Controls.OfType<RadioButton>().ToArray()[n].Checked = true

OfTypeでラジオボタンだけフィルタしてToArrayで配列に変換した後に[n]で当該ラジオボタンを選択.これだとCheckedが使えるぞ!!!
もうちょっと簡単な方法ありそうだけどまあ動くのでこれで.

※ちないろいろGoogleってた時にラジオボタン名を連番にして名前で指定,みたいのんは見かけたんだけど,実際には上記グループはタブになってて「1番目のタブの2番目のラジオボタン」みたいな指定しなきゃならんのでラジオボタン名を生成するのが面倒くさくてスルーやで.

0
1
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1