取消选中For Each Control循环中的所有RadioButton

时间:2017-04-13 14:12:37

标签: vb.net radio-button

我的表单上有7个RadioButtons,一个组中有5个,另一组中有2个。当他们在GroupBoxes时,由于某种原因,检查其中一个RadioButtons没有取消选中同一GroupBox中的其他人 - 我认为因为AutoCheck值是设置为False,这是必须的,因为否则在加载表单时,默认情况下会检查其中一个RadioButtons,并且我不希望这种情况发生。

因此,要取消选中同一RadioButtons内的其他GroupBox,我会尝试在{{1}中将值设置为True之后编写一个被调用的子例程事件。

RadioButton_Click

此代码更无用。对于表单上的每个控件,如果它是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 ,而不是RadioButtonrbtnAllSuppliers(2个单独的rbtnIndividual,那么它不是RadioButtons设置为RadioButton,然后将其设置为True

问题在于,它将2 False计为Labels,或至少将它们视为如此,因此在尝试设置``Checked RadioButtons标签时出错`。

然后我尝试了类似的东西

value of the

但是我不确定我会为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()

实现这一目标的最佳方式是什么?

1 个答案:

答案 0 :(得分:0)

使用Me.Controls.OfType(Of RadioButton),您可以避免检查循环中的类型,并确保每个控件都是RadioButton