【问题标题】:Awesomebar-like behavior with Windows FormsWindows 窗体的类似 Awesomebar 的行为
【发布时间】:2023-03-09 06:53:02
【问题描述】:

我正在尝试制作一个类似于 Firefox 3 Awesomebar 的组合框,具有以下行为:

  1. 输入文字
  2. 异步返回结果
  3. 上下选择列表中的结果,BUT保留在输入框中输入的文本,以便用户可以继续编辑以不同方式限制结果集
  4. Enter 触发父表单将处理的事件

我有异步结果和过滤所有工作,但我没有在结果中显示和选择的好方法。

当您向下箭头时,组合框会自动用所选内容填充输入框。失败 #3。

我有 DevExpress 控件,但它们的组合框做同样的事情,我不知道如何覆盖。

LookupEdit 不允许输入任意内容。 PopupContainerEdit 也没有。

我想要的行为类似于下面有一个列表框的文本框,并且文本框中的向上/向下事件传递给列表框。但是,如果我尝试制作一个将两者结合在一起的自定义控件,我不知道如何像普通组合框上的下拉菜单一样“浮动”列表框。

非常感谢线索!

【问题讨论】:

    标签: .net winforms devexpress


    【解决方案1】:

    您可能需要使用文本框而不是组合框,因为使用箭头键会从组合列表中选择值并覆盖当前值。通过使用文本框,您可以在 TextChanged 事件中进行查找,并且可以通过覆盖 KeyPress 事件来存储当前键入的值,以收集和存储用户键入的键。
    您必须在绘制事件中自行绘制值的弹出列表。

    这可能看起来过于复杂,但您可能需要删除组合控件并自己实现它的一些功能。

    【讨论】:

    • 这很痛苦,但似乎这是唯一的方法。可以稍微简单一点,只显示一个浮动在下面的 ListBox,不让它有焦点,然后将向上/向下键事件转发给它。
    【解决方案2】:

    我一直在使用 Skybound 中的 AutoComplete 控件。免费。它可以自定义,以便它可以近似于 Awesomebar 的行为。

    http://dev.skybound.ca/Products/AutoComplete/

    【讨论】:

    • 数据绑定模式下的这个控件几乎完全符合我的要求。岩石!谢谢!
    • 很高兴为您服务。 :)
    • 啊,问题:我希望能够让“文本”返回完成选项,例如“中间的字符串文本”和“更多文本”。我不知道如何覆盖仅在开始时匹配的默认过滤,并提供我自己的过滤。我需要购买许可证才能获取源代码吗?
    • 我不知道答案,但你可以问他们。查看链接上该页面底部的链接。上面写着“问一个问题”。我以前从他们那里得到过答案。
    • 他们实际上告诉我他们的控件不支持我想要做的事情 - 虽然响应速度很快,所以谢谢你......他们建议只显示我自己的浮动列表框,我已经尝试过并不像应有的那么简单...不敢相信没有嵌入式控制!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-08
    • 1970-01-01
    • 2010-12-07
    • 1970-01-01
    • 2015-04-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多