使用.net组合框

reg*_*gie 6 .net c# vb.net combobox

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

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

Han*_*ant 4

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

嗯,这解释了为什么它不起作用。修复它在技术上是可行的,但相当难看。您必须在 KeyUp 事件中运行代码并使用 EnumTheadWindows() 来查找自动完成窗口句柄。然后你可以使用 SetWindowPos() 将其变大。ComboBox.cs (AutoCompleteDropDownFinder.FindDropDowns) 中已经有类似的代码,请使用参考源或 Reflector 来帮助您正确完成此操作。祝你好运!