Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何降低组合框的下拉高度?_C#_.net_Winforms_Autocomplete_Combobox - Fatal编程技术网

C# 如何降低组合框的下拉高度?

C# 如何降低组合框的下拉高度?,c#,.net,winforms,autocomplete,combobox,C#,.net,Winforms,Autocomplete,Combobox,我通过扩展WinForm组合框实现了自动完成。我现在想做的是在打字时降低下拉列表的高度 我试过这样的方法: this.DropDownHeight = this.ItemHeight * this.Items.Count 在KeyUp事件处理程序的末尾,但结果非常奇怪 如何解决这个小问题?下拉高度属性控制下拉组合框时的高度 (是的,你说,这是显而易见的!) 但这与自动完成建议列表不同 (什么?它们看起来一样;它们都是下拉列表中的项目!) 是的,他们是。但它们在幕后的实现方式却截然不同。下拉组合

我通过扩展WinForm组合框实现了自动完成。我现在想做的是在打字时降低下拉列表的高度

我试过这样的方法:

this.DropDownHeight = this.ItemHeight * this.Items.Count
KeyUp
事件处理程序的末尾,但结果非常奇怪


如何解决这个小问题?

下拉高度属性控制下拉组合框时的高度

(是的,你说,这是显而易见的!)

但这与自动完成建议列表不同

(什么?它们看起来一样;它们都是下拉列表中的项目!)

是的,他们是。但它们在幕后的实现方式却截然不同。下拉组合框与“完整”组合框(WinForms中称为“简单”)相同,其中下拉部分永久显示在屏幕上。唯一的区别是,对于“DropDown”或“DropDownList”样式,下拉部分仅在用户请求时隐藏和显示。(.)这种风格的初衷是节省屏幕空间,但现在它变得如此流行,以至于每个人都使用它,尽管屏幕空间不再是一个问题

这意味着下拉项列表不会更改。Windows不会重复使用相同的下拉列表来显示自动完成建议。这是一个完全不同的弹出窗口,根据需要创建和销毁。这一点的致命缺陷在于,自动完成建议列表的大小是可调整的。它有一个在角落里调整大小的抓手。常规下拉列表中没有此项,因此它们显然不能位于同一个列表中。从技术上讲,自动完成建议列表是由shell实现的,与所有编辑控件使用的相同。(另一个死亡赠品是在虫子身上发现的,比如

因此,您实际上需要更改自动完成建议列表的下拉高度!但不幸的是,WinForms没有为此公开任何属性

因此,有理由得出这样的结论:你可能一开始就不应该这样做。允许用户根据自己的选择调整自动完成建议框的大小。这就是调整大小夹持器的用途。最后选择的尺寸将被记住并重新使用。始终尊重用户,即使您的设计部门认为他们可以做得“更好”


但是,当然,因为这是Windows,如果你愿意弄脏你的手,有一种方法可以解决你的问题。自动完成建议列表仍然是一个窗口,因此它仍然有一个窗口句柄,Windows将允许您操纵几乎任何可以获得句柄的窗口。我不一定建议你这么做,所以我会让你自己想出一个解决方案。请记住,当像这样的功能未公开时,它通常是出于某种原因而未公开的。你的黑客行为很可能会在未来版本的Windows上爆发,在Windows上,shell团队会重新开发自动完成功能。几乎不值得为支持而烦恼。

降低高度的标准是什么?将高度降低到shownCody给出的非常深刻的见解。。投了同样的票