Windows 窗体中类似于 Awesomebar 的行为

发布于 2024-07-08 09:00:32 字数 537 浏览 3 评论 0原文

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

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

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

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

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

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

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

非常感谢线索!

I'm trying to make a combo box that behaves somewhat like the Firefox 3 Awesomebar, with the following behavior:

  1. Type in text
  2. Asynchronously bring back results
  3. Up and down selects results in the list, BUT leaves the text that was typed in the entry box so the user can continue editing to limit the resultset differently
  4. Enter fires an event that the parent form will handle

I have the asynchronous results and filtering all working, but I don't have a good method for displaying and selecting within the results.

A combo box automatically fills the entry box with what is selected when you arrow down. Fails #3.

I've got the DevExpress controls, but their combo box does the same thing and I can't figure out how to override either.

A LookupEdit does not allow typing arbitrary stuff. Neither does a PopupContainerEdit.

I want behavior that's like a textbox with a listbox below it, and up/down events in the textbox get passed to the listbox. But if I try to make a custom control that combines the two like that, I have no clue how to "float" the listbox like the dropdown on a normal combo box.

Clues much appreciated!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

蔚蓝源自深海 2024-07-15 09:00:32

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

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

You may need to use a textbox instead of a combo box because using the arrow keys is selecting values from the combos list and overwriting your current value. By using the textbox you can do you lookup in the TextChanged event and you can store the currently typed value by overriding the KeyPress event to collect and store the keys the user has typed.
You popup list of values would have to be self drawn in the paint event.

This may seem overly complicated but you probably need to drop the combo control and implement some of its functions yourself.

落墨 2024-07-15 09:00:32

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

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

I've been using the AutoComplete control from Skybound. It's free. It can be customized, so that it can approximate the behavior from the Awesomebar.

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文