当我的鼠标移动到Combobox弹出列表的底部时,列表会自动开始向下滚动。但是当我处于最底层并且进入顶部时,没有自动滚动效果,因此我想禁用此行为,只能以一种方式工作,向下...
我找不到任何属性,所以我尝试在该下拉列表上获取mousemove事件以取消它,或者让它被处理,但它只在组合框本身触发,而不是在列表上。
我还尝试在该列表的顶部创建一些东西,例如隐藏面板,它获取鼠标移动事件而不是下拉列表,但是我找不到任何有用的东西,但是这个列表始终位于所有内容的顶部。 / p>
另一个想法是找到一个事件,当弹出列表中显示的项被更改时执行,当鼠标没有抓住滚动条或点击它时停止它,但这也是不可能的。没有事件触发。只有selectedchanged事件,但这是选择不在scrool上的触发器。
有没有解决办法呢?
答案 0 :(得分:0)
最后我找到了答案!!!
我的Combobox列表中有大约26行,这个行很大,所以我想每次只显示7行。
我找到DropDownHeight
属性,并设置它:属性ItemHeight
设置为13,而Font.Size
为8,25(默认值)。 7 * 13 = 91.然后设置它。
它的工作方式几乎完美,但是自动扫描存在问题。 (我在上面问过)
最后我意识到最后一行(这里是NNN)没有完全显示出来。当鼠标进入此行时,ComboBox Control会向我显示整行并将其向上滚动。
我开始改变尺寸并发现,当设置为93(= 7 * 13 + 2 )时,该线路完全显示。为什么2?可能是因为底部和顶部边界。现在没有自动滚动...
我也发现,另一种可能性是设置:
ComboBox1.IntegralHeight = False;
ComboBox1.MaxDropDownItems = 7;
这仅适用于DropDownHeight
中没有变化的情况,我的情况下的默认值为 106 (= 8 * 13 + 2),默认值为{{1}是8.