呃,我现在花了最后几个小时。我通常最终会从谷歌搜索中找到答案,但不是这个。有点头疼。
我的问题:
当用户点击组合框中的下拉箭头并阻止显示下拉列表时,如何捕获。
如何清除并填充下拉列表并以编程方式显示?
我有一个代理程序通过Internet远程连接到服务器。单击代理上的下拉箭头时,它将查询服务器以确定下拉列表中需要的内容。然后显示下拉列表。组合框用作GUI上后续组合框的过滤器。在检索数据时,显示下拉列表的延迟是完全可以接受的。最初查询下拉列表中的所有可能条目不是一个选项,因为有这么多!与列表框相比,需要组合框,因为用户也可以键入不在列表中的条目。
希望这能澄清我在做什么:
代理上的GUI:
ComboBox1 - 显示国家/地区
ComboBox2 - 显示城市 - 由ComboBox1选定项目确定的下拉列表
ComboBox3 - 显示由ComboBox2选定项目确定的城镇 - 下拉列表
ComboBox4 - 显示街道 - 由ComboBox3选定项目确定的下拉列表
答案 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
请注意,ComboBox2
到ComboBox4
被禁用,只有在填充数据时才会启用。