- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我通过扩展 WinForm 组合框实现了自动完成。我现在想做的是减少打字时的下拉高度。
我尝试过以下方法:
this.DropDownHeight = this.ItemHeight * this.Items.Count
在KeyUp
事件处理程序的末尾,但结果很奇怪。
如何解决这个小问题?
最佳答案
DropDownHeight
属性控制组合框下拉时的高度。
(是的,你说,这是显而易见的!)
但这与自动完成建议列表不同。
(什么?它们看起来一样;它们都是下拉项目列表!)
是的,他们是。但它们在幕后的实现方式却截然不同。下拉组合框与“完整”组合框(WinForms 中的样式称为“简单”)相同,其中下拉部分永久显示在屏幕上。唯一的区别是,使用“DropDown”或“DropDownList”样式,下拉部分被隐藏,仅在用户请求时才显示。 (A comparison of various combo box styles。)这种风格的初衷是为了节省屏幕空间,但现在它变得如此流行,以至于每个人都使用它,尽管屏幕空间不再是一个问题。
这意味着下拉项列表不会改变。 Windows 不会重复使用相同的下拉列表来显示自动完成建议。这是一个完全不同的弹出窗口,根据需要创建和销毁。最重要的是,自动完成建议列表是可以调整大小的。角落里有一个调整夹子大小的工具。常规下拉列表没有这个,所以它们显然不能是同一个。从技术上讲,自动完成建议列表是由 shell IAutoCompleteInterface
实现的。 ,并且与所有编辑控件使用的相同。 (另一个致命的漏洞是在 this one 这样的错误中发现的。)
所以您实际上需要更改自动完成建议列表的下拉高度!但不幸的是,WinForms 没有公开任何这样做的属性。
因此,可以合理地得出结论:您可能一开始就不应该这样做。允许用户根据自己的选择调整自动完成建议框的大小。这就是调整大小夹具的用途。他们最后选择的尺寸会被记住并重复使用。始终尊重用户,即使您的设计部门认为他们可以做得“更好”。
但是,当然,由于这是 Windows,如果您愿意亲自动手,就有办法解决您的问题。自动完成建议列表仍然是一个窗口,因此它仍然有一个窗口句柄,Windows 几乎可以让您操作任何可以获得句柄的窗口。我不一定建议这样做,所以我会离开你on your own破解解决方案。请记住,当此类功能未公开时,通常是有原因的。您的黑客攻击可能会在未来版本的 Windows 上遭到破坏,其中 shell 团队会重新设计自动完成功能。几乎不值得为支持带来麻烦。
关于c# - 如何减小 ComboBox 的 DropDownHeight?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6828557/
我无法正确设置 ComboBox 的 DropDownHeight 以显示所有项目。 我正在使用从 ComboBox 继承的控件。我已经覆盖了 OnDrawItem 和 OnMeasureItem 方
我通过扩展 WinForm 组合框实现了自动完成。我现在想做的是减少打字时的下拉高度。 我尝试过以下方法: this.DropDownHeight = this.ItemHeight * this.I
我通过扩展 WinForm 组合框实现了自动完成。我现在想做的是减少打字时的下拉高度。 我尝试过以下方法: this.DropDownHeight = this.ItemHeight * this.I
我有一个 RadComboBox 如下:-
我是一名优秀的程序员,十分优秀!