拦截组合框下拉列表

时间:2009-08-15 10:12:37

标签: vb.net visual-studio-2008 combobox drop-down-menu

呃,我现在花了最后几个小时。我通常最终会从谷歌搜索中找到答案,但不是这个。有点头疼。

我的问题:

  1. 当用户点击组合框中的下拉箭头并阻止显示下拉列表时,如何捕获。

  2. 如何清除并填充下拉列表并以编程方式显示?

  3. 我有一个代理程序通过Internet远程连接到服务器。单击代理上的下拉箭头时,它将查询服务器以确定下拉列表中需要的内容。然后显示下拉列表。组合框用作GUI上后续组合框的过滤器。在检索数据时,显示下拉列表的延迟是完全可以接受的。最初查询下拉列表中的所有可能条目不是一个选项,因为有这么多!与列表框相比,需要组合框,因为用户也可以键入不在列表中的条目。

    希望这能澄清我在做什么:

    代理上的

    GUI:

    ComboBox1 - 显示国家/地区

    ComboBox2 - 显示城市 - 由ComboBox1选定项目确定的下拉列表

    ComboBox3 - 显示由ComboBox2选定项目确定的城镇 - 下拉列表

    ComboBox4 - 显示街道 - 由ComboBox3选定项目确定的下拉列表

1 个答案:

答案 0 :(得分:1)

当用户点击下拉按钮时,我建议您填充并在上一个组合框的值更改时启用以下组合框,而不是填充下拉列表。如果填充组合框的速度很慢,则在用户选择值之后的延迟比用户选择值之前的延迟要快得多。

假设您使用的是Windows Forms,则是第一个组合框的处理程序:

Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
  ComboBox2.Enabled = True
  ' Fill ComboBox2 based on ComboBox1.SelectedItem
  ComboBox2.Items.Clear()
  ComboBox2.Items.Add("Foo")
  ComboBox2.Items.Add("Bar")
End Sub

请注意,ComboBox2ComboBox4被禁用,只有在填充数据时才会启用。