C# 这个UI工作的优雅方式?

C# 这个UI工作的优雅方式?,c#,visual-studio-2010,vsto,C#,Visual Studio 2010,Vsto,在VS.NET 4.0中: 因此,我有一些组合框,当组合框文本发生更改(事件)时,它们可以查询服务器中与组合框中的文本匹配的数据 我希望在查询完成时下拉组合框,以便用户可以看到结果,甚至可以使用它们 问题是: Rapid fire queries=>Rapid fire下拉菜单(不太有用) 更改下拉列表的内容会导致文本输入光标重置到字段中的第一个位置。在光标被迫移动到第一个位置之前键入超过3个字符是非常困难的。-据我所知,这是ComboBox的默认行为 按“向下”滚动浏览建议列表会将下拉列表顶部

在VS.NET 4.0中:

因此,我有一些组合框,当组合框文本发生更改(事件)时,它们可以查询服务器中与组合框中的文本匹配的数据

我希望在查询完成时下拉组合框,以便用户可以看到结果,甚至可以使用它们

问题是:

Rapid fire queries=>Rapid fire下拉菜单(不太有用)

更改下拉列表的内容会导致文本输入光标重置到字段中的第一个位置。在光标被迫移动到第一个位置之前键入超过3个字符是非常困难的。-据我所知,这是ComboBox的默认行为

按“向下”滚动浏览建议列表会将下拉列表顶部的第一个条目放入文本字段。除非用户点击Return或单击它,否则这种情况最好不会发生

我想要的是:

克服下拉光标重新定位问题。(最重要的是)

使用箭头键滚动列表,无需强制选择任何内容

限制查询服务器的速率


我有自己的解决方案,但目前看起来很糟糕

我正在使用计时器对象处理下拉和查询计时,但是我的实现阻止了在用户键入时进行查询,并且如果用户键入太快或太慢,下拉并不总是在正确的时间发生


感谢那些试图帮助你的人

> P>我不确定是否完全理解你想要什么,但我个人会考虑跳过<代码>组合框并使用<代码> ListVIEW < /代码>。可能是一个隐藏的,我只会在查询结束时显示,然后是一个用户可以输入的
文本框。

感觉你在尝试使用组合框来完成它不应该做的事情。

你是在使用更新面板而不是自己处理ajax请求吗?你在使用什么UI技术-ASP.net、WinForms、WPF、Silverlight等等?它是VS所称的“用户任务窗格”,我认为这算是WPF。我正在更新.Items集合,因为其他东西没有达到我想要的效果。我已经看到了隐藏列表框方法,但我看到的实现存在一些问题。例如,有时无法点击退出。如果这不起作用,我会回到那个方法。