我必须修改一个VB6应用程序,并且反复在控制阵列上撞墙。
我知道数组的事件处理程序包含它的索引值,我可以在那里设置一些变量,但我应该能够直接访问OptionButton数组中的选定单选按钮。目前我正在这样做
For i = 0 To optView.Count - 1
If optView.Item(i).value = True Then
currIndex = i
Exit For
End If
Next
这真的是我唯一的选择吗?
答案 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