我有一个具有组合框控件的表单。我已经选择了下拉样式属性到DropDown。我还将DropDown Width设置为250。 我已将自动完成模式设置为建议,并将自动完成源设置为列表项。 当我点击下拉菜单时它完全正常。但是当我输入某些东西时,自动完成模式会激活一个宽度很小的下拉。
任何帮助欣赏。 我想知道如何通过代码增加自动完成下拉的宽度,以便正确查看列表项。 我正在使用C#
答案 0 :(得分:4)
是的,这是设计的。 ComboBox使用SHAutoComplete API function来实现自动完成功能。注意声明,该函数接受ComboBox的文本框部分的句柄。因此,它不知道它实际上是为ComboBox而不是TextBox提供自动完成信息。因此,它无法弥补您使用的非标准下拉宽度。
嗯,这解释了为什么它不起作用。修复它在技术上是可行的,但非常难看。您必须在KeyUp事件中运行代码并使用EnumTheadWindows()来查找自动完成窗口句柄。然后你可以使用SetWindowPos()来扩大它。在ComboBox.cs(AutoCompleteDropDownFinder.FindDropDowns)中已经存在类似于此的代码,使用Reference Source或Reflector帮助您实现此目的。祝你好运!
答案 1 :(得分:2)
修改强>
我删除了我的第一个建议,想出一个新的链接:
实际上它可以控制自动完成下拉框的宽度,但它有点棘手并涉及广泛使用win API ...
答案 2 :(得分:-1)
也许我在Codeproject上写的这篇文章可能对你有关组合下拉框的帮助,以及我对此进行攻击的方式......