私のフォームに7 RadioButtons
、1つのグループに5つ、別のグループに2つがあります。彼らがGroupBoxes
に入っていたときに、RadioButtons
のいずれかをチェックしても、何らかの理由で同じGroupBox
の他のもののチェックを外さなかったのですが、AutoCheck
の値がFalse
に設定されていたと思います。 RadioButtons
のいずれかがデフォルトでチェックされていますが、これは起こりたくありません。For Eachコントロールループ内のすべてのラジオボタンのチェックを外します
ので、同じGroupBox
内の他のRadioButtons
をオフにし、私はRadioButton_Click
イベントにTrue
に値を設定した後、呼び出されたサブルーチンを書くしようとしています。
For Each c As Control In Me.Controls
If TypeOf c Is RadioButton Then
If c.Name <> "rbtnAllSuppliers" AndAlso c.Name <> "rbtnIndividual" Then
If c.Name <> rbtn.Name Then
For Each rbt As RadioButton In Me.Controls
If rbt.Name = c.Name Then
rbt.Checked = False
End If
Next
End If
End If
End If
Next
このコードは無責任に動作します。フォーム上の各コントロールのために、それはrbtnAllSuppliers
又はrbtnIndividual
(2別々RadioButtons
と呼ばれていないRadioButton
をだ、それがTrue
に設定されているRadioButton
しない場合、False
に設定する。
問題です、それはRadioButtons
として2 Labels
をカウントしている、または少なくともそうなるためにそれらをキャストするので、エラーが設定しようとすると、 ``チェックvalue of the
Label`。私は、似たような試みた
For Each c As Control In Me.Controls
If c.GetType Is GetType(RadioButton) Then
If c.Name <> "rbtnAllSuppliers" AndAlso c.Name <> "rbtnIndividual" Then
If c.Name <> rbtn.Name Then
AddHandler DirectCast(c, RadioButton).Checked, AddressOf c.
End If
End If
End If
Next
しかし、私はAddressOf
コードのために何を置くのか分からないのですか?デリゲートとしてここに入るのは何ですか? AddressOf currentSubroutine()
を置くと、確かに無限ループが作成されますか?
RadioButtons
のチェックボックスをすべてオフにする方法はありますか?
これを達成するにはどうすればよいでしょうか? Me.Controls.OfType(Of RadioButton)
を使用することにより
あなたが '任意のラベルに達し避けるために(ラジオボタンのうち)' Me.Controls.OfTypeを試してみましたであることを保証します? –
@AFriend Perfect!これまで必要とされていた通りに動作しているようです。ありがとうございます。 – Harambe