2014-03-31 58 views
2

我有10个组合框,每个组合框都有5个单选按钮。所有10组盒子都有相同的选项(是,否,也许,绝对和永不)。Visual Basic多个函数一次函数

我想检查所选单选按钮的所有组框。所以我正在运行For循环来执行检查。

我的问题是,可以做一个如果函数检查是否在所有10组框中选择“是”单选按钮?

我的For循环肯定遍历所有10个组框。我对此感到高兴。

然而,我有一个问题有以下几点:

If (Yes.Checked) And (Yes1.checked) Then 
'Do something here 
End If 

不幸的是这个代码,如果这两个组框选择了“是”单选按钮才有效。

我该怎么做才能检查每个组Box,添加到一个变量,如果它被选中?

理想情况下,我想运行5如果unctions,而不是50

+0

当你迭代时,你将不得不在每个组框中找到你的单选按钮。尝试在每个单选按钮上设置Tag属性,然后以这种方式识别它们。这几乎是Tag属性的用处。 – Jeff

+0

'理想情况下,我想运行5如果强制执行,而不是50.' - 在实践中,最终将得到** 10 **如果或(更好)“单个选择案例”。 –

+0

谢谢。我还是比较新的VB。我将如何检查标签属性? –

回答

0

我的解决方案一切听起来非常相似,@ user2721815发布,但它实际上是非常不同的。我认为创建一个继承树没有意义,然后通过控制循环,因为你可能已经这样做了。例如,您可以通过单选按钮遍历单选按钮文本并获得结果。

更好的方法是使用继承来在定制面板类上公开一个{NotSelected, Yes, No, Maybe, Definitely, and Never}枚举作为属性。创建一个单选按钮后裔,并通过属性公开其枚举值。这样,如果选中一个单选按钮,您确切知道它对应的是哪个枚举值。我将上面的NotSelected选项设置为默认值。请确保每个自定义单选按钮在UI设计器中都有一个值。

下一步 - 在自定义面板类的单个处理程序中处理所有特殊复选框的checked事件,并设置其选定的枚举值(让属性名称为.SelectedOption)。在这一点上,你几乎完成了接线。

现在在您的主程序中,在任何给定的时间点,通过您的自定义面板并确定哪些有.SelectedOption = SelectedOptions.Yes。这种方法非常灵活,因为它不会将您限制在表单上的多个面板上。您也可以灵活选择选项 - 某些面板可能没有所有选项,并且所有选项都可以正常工作。

如果您需要一些代码以更好地理解此方法,请随时在下面进行评论。

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 

然后,你必须包含在一个单一循环