我有10个组合框,每个框中有5个单选按钮。所有10个组合框都有相同的选项(是,否,可能,绝对和从不)。
我想检查所选单选按钮的所有组框。所以我正在运行For循环来进行检查。
我的问题是,可以做一个如果功能检查"是"所有10个组合框中都选择了单选按钮?
我的For循环肯定会遍历所有10个Group Box。我很高兴。
但是我遇到以下问题:
If (Yes.Checked) And (Yes1.checked) Then
'Do something here
End If
不幸的是,这个代码只有在两个Group Box都有" Yes"单选按钮。
我可以做些什么来检查每个组Box,如果选择了它,添加到变量?
理想情况下,我想要运行5次,而不是50次。
答案 0 :(得分:0)
我有类似的问题,这就是我解决它的方法:
为每个答案创建特定类型,然后将该类型分配给每个选项。例如,您可以创建包含单选按钮的组,如下所示:
Public Class groupPanel
Inherits Panel
Public Sub New()
End Sub
End Class
然后你会像这样创建变量:
Private group as new groupPanel()
然后,为“是”响应创建一个特定类型,如下所示:
Public Class yesRadioButton
Inherits System.Windows.Forms.RadioButton
Public Sub New()
End Sub
End Class
然后你继续为每个开始做同样的事情(一个用于“否”,一个用于“可能”,依此类推:
Public Class noRadioButton
Inherits System.Windows.Forms.RadioButton
Public Sub New()
End Sub
End Class
然后,在创建组时,将特定类型分配给它们所属的选项。例如:
Private yes_button as new yesRadioButton()
yes_button.parent = groupPanel
Private no_button as new noRadioButton()
no_button.parent = groupPanel
等等
然后你可以简单地遍历组中的每一个并计算有多少。
For each g as control in Main
If TypeOf g Is groupPanel Then
For each rb as control in g
If TypeOf rb is yesRadioButton then
' add one to the "yes" counter
End if
ElseIf TypeOf rb is noRadioButton then
' add one the "no" counter
End if
' and so on until you check all options
Next
End if
Next
然后你将所有内容都包含在一个循环中
答案 1 :(得分:0)
我的解决方案可能与@ user2721815发布的内容非常相似,但实际上却非常不同。我认为创建一个继承树然后遍历控件是没有意义的,因为你之前已经可以这样做了。例如,您可以迭代单选按钮并通过单选按钮文本获得结果。
更好的方法是使用继承在自定义面板类上公开{NotSelected, Yes, No, Maybe, Definitely, and Never}
枚举作为属性。创建单选按钮后代并通过属性公开其枚举值。这样,如果选中单选按钮,您就可以确切地知道它对应的枚举值。我将上面的NotSelected
选项保留为默认值。请确保每个自定义单选按钮都有一个填充在UI设计器中的值。
下一步 - 处理所有特殊复选框'在自定义面板类的单个处理程序中检查事件,并设置其选定的枚举值(让属性名称为.SelectedOption
)。此时您已完成接线工作。
现在,在您的主程序中,在任何给定的时间点,浏览自定义面板并确定哪些具有.SelectedOption = SelectedOptions.Yes
。这种方法非常灵活,因为它不会限制您在表单上的许多面板。您也可灵活选择选项 - 某些面板可能没有所有选项,一切都可以正常工作。
如果您需要一些代码来更好地理解这种方法,请随时在下面发表评论。