VB6如何在控件数组中获取选中/检查的控件

时间:2012-03-27 16:58:26

标签: vb6

我必须修改一个VB6应用程序,并且反复在控制阵列上撞墙。

我知道数组的事件处理程序包含它的索引值,我可以在那里设置一些变量,但我应该能够直接访问OptionButton数组中的选定单选按钮。目前我正在这样做

For i = 0 To optView.Count - 1
    If optView.Item(i).value = True Then
        currIndex = i
        Exit For
    End If
Next

这真的是我唯一的选择吗?

2 个答案:

答案 0 :(得分:3)

是的,这是我们唯一的选择。控制数组对象不包含任何选择逻辑(这是有道理的,因为“选择”可能对不同的控件意味着不同的东西)。我所做的唯一更改是将For替换为For Each

答案 1 :(得分:0)

我使用过的另一种方法。编写一个函数,然后调用该函数,传入控件名称,返回索引号。然后,如果将其添加到模块(.bas)中,您可以在将来重复使用它。

Function f_GetOptionFromControlArray(opts As Object) As Integer

    ' From  http://support.microsoft.com/KB/147673
    ' This function can be called like this:

    ' myVariable = f_GetOptionFromControlArray(optMyButtons)   'Control syntax OK
    ' myVariable = f_GetOptionFromControlArray(optMyButtons()) 'Array syntax OK

    On Error GoTo GetOptionFail
    Dim opt As OptionButton

    For Each opt In opts
        If opt.Value Then
            f_GetOptionFromControlArray = opt.Index
            Exit Function
        End If
    Next

    GetOptionFail:
        f_GetOptionFromControlArray = -1

End Function