其他分享
首页 > 其他分享> > WinForms:如何避免使用AutoScroll的水平滚动条?

WinForms:如何避免使用AutoScroll的水平滚动条?

作者:互联网

我正在编写一个自定义控件,其中包含一系列项目(子控件),这些条目水平调整大小以适合控件的宽度.如果有很多项目(或调整控件的大小,使其在垂直方向上不够高),则需要垂直滚动条;但是当出现垂直滚动条时,子控件突然太宽,导致出现水平滚动条.

考虑到我是手动控制控件的放置(不依赖于AnchorStyles),有什么适当的方法可以确保在不需要时不会出现水平滚动条? (注意:因为我在Compact Framework上,所以我无法手动控制VScroll属性;并且如果某项的最小宽度大于客户区域的宽度,则合法地需要水平滚动条.)

解决方法:

在类似情况下,我所做的就是每次将一个项目添加到列表中之后,我都会检测到滚动条是否可见并手动调整宽度.

我所做的检测滚动条是否显示的是:

>通过P / Invoke通过GetWindowLong()在控件上设置了WS_VSCROLL的测试.
>扫描控件的子控件以查找垂直滚动条控件.

这取决于控件如何处理滚动条,即正确的滚动条.

而且这是在Windows上,而不是在CF上,所以我不确定这是否会完全相同.

标签:autoscroll,compact-framework,c,net,winforms
来源: https://codeday.me/bug/20191102/1994597.html