就是这样 单击三个复选框中的任何一个,我需要数据从数组流到组合框我尝试创建一个数组,但我不确定它是否正确的方式她的代码:
Private B(2) As String
Private M(2) As String
Private P(2) As String
Private Sub Combo1_Change(Index As Integer)
Dim B As String
Dim M As String
Dim P As String
B = Array("Bicholim", "Valpoi")
M = Array("Mapusa", "Pernem", "Porvorim")
P = Array("Panjim", "Ponda")
If Check1.Checked = True Then
Combo1.items.Add (Bicholim)
Else
combo1.item = Null
If Check2.Checked = True Then
Combo1.items.Add (M)
Else
Combo1.Item = Null
If Check3.Checked = True Then
Combo1.items.Add (P)
Else
Combo1.Item = Null
End Sub
答案 0 :(得分:3)
快速代码审核:
首先,真是一团糟。您有VB6控件数组事件过程[Private Sub Combo1_Change(Index As Integer)]和默认命名控件[Combo1,Check1,Check2,Check3]。但是,组合添加项语法是VB.NET [Combo1.items.Add()]。
<强>句法:强>
标准VB6对象:
我猜你在组合框中基本上想要不同的项目,具体取决于复选框的状态。我不知道你为什么要使用 Combo1 Change 事件。听起来不太可能。相反,您需要回复复选框点击。因此,您提供的代码应该在一个过程中,从每个复选框中调用单击事件过程。
到目前为止,让我们解决这个问题:
Option Explicit
Private Sub RefreshCombo()
Dim B As Variant
Dim M As Variant
Dim P As Variant
B = Array("Bicholim", "Valpoi")
M = Array("Mapusa", "Pernem", "Porvorim")
P = Array("Panjim", "Ponda")
' Remove all items from the array.
Combo1.Clear
If Check1.Value = vbChecked Then
AddArrayItemsToComboBox Combo1, B
End If
If Check2.Value = vbChecked Then
AddArrayItemsToComboBox Combo1, M
End If
If Check3.Value = vbChecked Then
AddArrayItemsToComboBox Combo1, P
End If
End Sub
Private Sub AddArrayItemsToComboBox(ByRef cmb As ComboBox, ByRef vasValues As Variant)
Dim nIndex As Long
For nIndex = 0 To UBound(vasValues)
Combo1.AddItem vasValues(nIndex)
Next nIndex
End Sub
Private Sub Check1_Click()
RefreshCombo
End Sub
Private Sub Check2_Click()
RefreshCombo
End Sub
Private Sub Check3_Click()
RefreshCombo
End Sub
你可以通过使用一个控制数组的复选框来解决这个问题。