VB.net初心者です。
複数のコントロール名(今回はラジオボタン)を順番に取得し、条件を満たしているかチェックしたいです。
初心者のため見当違いなことを書いていたらすみません。
#前提
フォームにラジオボタンが3つ配置してあります。
コントロール名(?)は次のように定義しています。
rdoSubject1,rdoSubject2,rdoSubject3
#実現したいこと
ラジオボタンがTrueとなっているのが、1なら、2なら...というようなCase文を書いています。
VB
1 2 Select Case True 3 4 Case Me.rdoSubject1.Checked 5 '処理 6 Case Me.rdoSubject2.Checked 7 '処理 8 Case Me.rdoSubject3.Checked 9 '処理 10 11End Select
このような処理(Case~)を一つ一つ書くと長くなってしまうので、数字の部分を変数に置き換えて、For Next文でまとめたいと考えました。
#試してみたこと
以前、GetObject("moon0" & n.ToString) のような形で画像(moon01~05という名前)を読み込めた記憶があったので似たようなことをしてみたのですが、「StringはCheckのメンバではありません」というようなエラーが出てしまいました。また、SelectCaseの中のFor文の中にCaseを置くことはできなさそうだったのでCaseではなくIf文になおしました。
.ToStringを消すと、「IntegerはCheckedのメンバーではありません」というエラーが出るので、.Checkedで使えるようにすればよいということなのでしょうか。。
VB
1 2For i = 1 To 3 3 If "Me.rdoKamoku" & i.ToString .Checked = True Then 4 '処理 5 End If 6Next i
よろしくお願いいたします。
#解決後
イベントハンドラを利用する場合は、tosiさんの回答と、以下のコードを組み合わせることで出来ました。
以下は関数として用意したもの。
VB.net
1Private Function Dainyu(pArrKijyun(,) As Integer) As Integer() 2 3 Dim Modori(2) As Integer '関数の戻り値 4 5 For i = 0 To 2 6 7 Dim rdoSTR As String = "rdoKamoku" & i + 1 'コントロール取得用の文字列 8 Dim rdo As Control = grpKamoku.Controls(rdoSTR) 'rdoKamokuはgrpKamokuという名前GroupBoxの上に置いているから 9 Dim aaa As RadioButton = CType(rdo, RadioButton) 10 11 If aaa.Checked = True Then 12 13 For j = 0 To 2 14 15 Modori(j) = pArrKijyun(i, j) 16 17 Next j 18 19 End If 20 21 Next i 22 Return New Integer() {Modori(0), Modori(1), Modori(2)} 23 24 End Function
回答4件
あなたの回答
tips
プレビュー