与组合框连接下拉列表

时间:2014-07-30 13:44:19

标签: vb.net combobox

在我的项目中有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

1 个答案:

答案 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