【问题标题】:Winforms, can I use a text box here instead of a combobox? (dropdown list with over 15k options)Winforms,我可以在这里使用文本框而不是组合框吗? (超过 15k 选项的下拉列表)
【发布时间】:2021-05-20 04:04:21
【问题描述】:

在过去的几周里,我一直在为工作构建一个产品演示,其中包括一个用于输入新客户查询信息的 winform。其中一个表单元素是一个文本框,为了方便起见,到目前为止我还没有对其进行任何验证。但是,我现在需要让用户只能从 sql 数据库表(包含大约 15k 条街道)中输入有效位置。

我对 C# 编程还是很陌生。我的第一个想法是我应该将我的文本框更改为组合框,但我似乎记得当您单击组合框时,列表中的所有选项都会在您输入任何内容之前出现。由于我们的计算机速度很慢并且有很多选项,我真的不想让屏幕泛滥,所以我想知道是否有办法可以继续使用我的文本框和 onkeypress(可能是 tab 键)弹出一个对话框列表中所有最接近的匹配项,提示用户选择有效选项?

如果没有,有没有办法阻止我的组合框在出现提示之前显示选项列表?

【问题讨论】:

  • 嗨,看看这个链接c-sharpcorner.com/blogs/…
  • 我可能会选择带有validationAuto-Complete 的TextBox。
  • Echo Fildor 的评论,并使自动补全源动态化;不要在其中放入 15k 个项目,在用户键入 3 个字符后执行数据库搜索并在其中放入更多有限的行数

标签: c# sql winforms combobox textbox


【解决方案1】:

我认为组合框不适合这么多项目。

我的方法是使用单独的列表视图来显示匹配项。您可能可以将匹配项放在下拉式无边框窗口中,但我发现这更复杂,并且可能难以使交互正常工作。 我只想将街道放在单独的列表视图控件中并对其应用过滤器。

确保视图可调整大小,当使用旧的窗口控件时,我发现它非常令人沮丧,因为它是为 640x480 屏幕编写的,并且不允许调整大小。

请记住性能,在每次按键搜索时,您可能希望获取所有记录并在内存中进行搜索,而不是为每个键进行 sql 查询。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-07
    • 2011-07-27
    • 1970-01-01
    • 1970-01-01
    • 2016-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多