在我的项目中有2个组合框。 这些被称为cbPricingText& cbPricingVal分别。
我想要的是这两个组合框的DropDown变得同步。即,当一个打开时,另一个打开,关闭时也一样。
到目前为止,我已尝试在.DropDown
- 事件和.Click
- 事件中使用以下代码。
Private Sub cbPricingVal_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles cbPricingVal.Click
If cbPricingVal.DroppedDown = False Then
cbPricingVal.DroppedDown = True
End if
End Sub
将代码置于.DropDown
- 事件中导致一个永不停止的循环崩溃了应用程序(事件在实际操作之前触发,因此2个组合框的事件会在没有结束时互相触发)。
将其置于.Click
事件中几乎工作。点击的框首先按原样下降,但是当它的兄弟盒子稍后掉落时,原件会立即关闭。
我的目标是否可行?若然,有人知道如何去做吗?
编辑:
丢弃组合框2的过程可能会使焦点从组合框1移开,这就是导致关闭的原因。是否可以从组合框中删除.DropDown
事件,然后重新添加它?
或许可能是以下情况? (虽然我在事件处理方面很糟糕,但这根本不起作用)
Private Sub cbPricingVal_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles cbPricingVal.Click
If cbPricingVal.DroppedDown = False Then
RemoveHandler cboKCPricePerBadgeText.DropDownClosed, _
Windows.Forms.ComboBox.DropDownClosed
cbPricingVal.DroppedDown = True
AddHandler cboKCPricePerBadgeText.DropDownClosed, _
Windows.Forms.ComboBox.DropDownClosed
End if
End Sub
答案 0 :(得分:0)
每当您使用"点击"事件或下拉,他们一遍又一遍地相互呼叫(因此循环)。您可能希望更改"索引"事件而不是。当它们下降时,它不是在同一时间(一个接一个),但你可能不想要那样。如果它们同时下降,则用户可以尝试在他们应该一次编辑一个时同时编辑它们。
Private Sub cbPricingText_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cbPricingText.SelectedIndexChanged
If cbPricingVal.DroppedDown = False Then
cbPricingVal.DroppedDown = True
End If
End Sub