2017-04-13 34 views
0

私のフォームに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)を使用することにより

+1

あなたが '任意のラベルに達し避けるために(ラジオボタンのうち)' Me.Controls.OfTypeを試してみましたであることを保証します? –

+0

@AFriend Perfect!これまで必要とされていた通りに動作しているようです。ありがとうございます。 – Harambe

答えて

0

あなたがループ内で種類を確認することを避けることができ、すべてのコントロールがRadioButton

関連する問題