我得到的XML包含要绑定到组合框的数据。每次将项目添加到组合框时绑定此数据,都会触发其更改事件。我想在绑定数据并且用户选择任何项目后才触发更改事件。
任何可以解决此问题的帮助代码?
答案 0 :(得分:1)
使用标志指示您是否要处理该事件;
private mblIsUpdating as boolean
...
sub addDataFromXml
mblIsUpdating = true
combo.additem ...
mblIsUpdating = false
end sub
sub combo_change
if (mblIsUpdating) then exit function
//handle change
end sub
答案 1 :(得分:0)
根据我的经验,如果组合框的值不为空,则仅在更改组合框项目列表时才会触发组合框更改事件。如果在首次初始化组合框时发生此问题,请在填充组合框之前不要指定默认值。
如果您需要在其他时间更改组合框列表,例如Alex K说,请创建一个布尔标志以指示是否要忽略更改事件。
我不清楚您的问题是,当您填充组合框时更改事件是一次触发,还是每个.AddItem
触发一次。如果是后一个问题,那么您可以通过为组合框创建一系列值并将其分配给组合框.List
来减少更改事件的数量。
这是一个带有2-d数组的示例,该数组使用所有打开的工作簿的名称和路径填充组合框。 (一维数组也有效。)
Private Sub InitializeComboBox()
Dim aList() As String
Dim i As Integer, iMax As Integer
' build combobox list with zero-based array
iMax = Application.Workbooks.Count - 1
ReDim aList(iMax, 2)
For i = 0 To iMax
With Application.Workbooks(i + 1)
aList(i, 0) = i
aList(i, 1) = .Name
aList(i, 2) = .Path
End With
Next i
With Me.ComboBox1
.ColumnCount = 3
.ColumnWidths = "0 pt;80 pt;220 pt"
.ListWidth = "300 pt"
.List = aList
End With
End Sub