使用.net组合框

时间:2010-03-10 17:26:26

标签: c# .net vb.net combobox

我有一个具有组合框控件的表单。我已经选择了下拉样式属性到DropDown。我还将DropDown Width设置为250。 我已将自动完成模式设置为建议,并将自动完成源设置为列表项。 当我点击下拉菜单时它完全正常。但是当我输入某些东西时,自动完成模式会激活一个宽度很小的下拉。

任何帮助欣赏。 我想知道如何通过代码增加自动完成下拉的宽度,以便正确查看列表项。 我正在使用C#

3 个答案:

答案 0 :(得分:4)

是的,这是设计的。 ComboBox使用SHAutoComplete API function来实现自动完成功能。注意声明,该函数接受ComboBox的文本框部分的句柄。因此,它不知道它实际上是为ComboBox而不是TextBox提供自动完成信息。因此,它无法弥补您使用的非标准下拉宽度。

嗯,这解释了为什么它不起作用。修复它在技术上是可行的,但非常难看。您必须在KeyUp事件中运行代码并使用EnumTheadWindows()来查找自动完成窗口句柄。然后你可以使用SetWindowPos()来扩大它。在ComboBox.cs(AutoCompleteDropDownFinder.FindDropDowns)中已经存在类似于此的代码,使用Reference Source或Reflector帮助您实现此目的。祝你好运!

答案 1 :(得分:2)

修改
我删除了我的第一个建议,想出一个新的链接:

  

实际上它可以控制自动完成下拉框的宽度,但它有点棘手并涉及广泛使用win API ...

Combobox too small when doing Suggest

答案 2 :(得分:-1)

也许我在Codeproject上写的这篇文章可能对你有关组合下拉框的帮助,以及我对此进行攻击的方式......