gpt4 book ai didi

c# - 可变大小所有者绘制 ComboBox;列表大小不正确

转载 作者:太空狗 更新时间:2023-10-29 23:04:31 28 4
gpt4 key购买 nike

我从 ComboBox 派生了一个类,使它成为所有者绘制的列表框(DrawMode.OwnerDrawVariable 样式),并通过重写 OnMeasureItem 和 OnDrawItem 我将特殊项目添加到下拉列表(例如分隔符),它们属于比控件中的正常项目更小/更大。

现在,我遇到但似乎无法有效解决的问题是下拉列表的大小:下拉列表末尾有一个丑陋的空白区域。我以为我通过将 ComboBox 的 DropDownHeight 属性设置为所有项目高度的总和来解决这个问题,但这似乎并不总是有效。有时,在随机数量的项目上,厄运的空白区域会返回。这是一个不常见的问题,但希望是一个常见且易于修复的问题。

我怎样才能让 ComboBox 的下拉列表的大小精确到它里面的项目占用的大小?

最佳答案

我在 ComboBox.UpdateDropDownHeight() 方法中发现了一个非常愚蠢的错误。当 DropDownHeight 属性与默认值匹配时,它会计算自定义高度以使下拉列表适合项目数。即使您更改了 DrawMode,它也会这样做,这是完全错误的。

解决方法:

  int height = ...; // Your code here
if (height == 106) ++height;
comboBox1.DropDownHeight = height;

你会得到一个像素的间隙,你应该能够在你的 OnDrawItem() 重载中隐藏它。

关于c# - 可变大小所有者绘制 ComboBox;列表大小不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1967185/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com