设想:
- 在表单上放置一个面板。
- 将面板的 BorderStyle 设置为 FixedSingle。(只是为了让您在运行时可以看到它。)
- 设置面板的 AutoScroll=True
- 将面板的锚点设置为上、左、下、右
- 在面板内,放置任何相当大的控件(按钮、图片框或其他)。
- 将控件的底部边缘调整为仅比面板底部高几个像素。
- 调整控件的右边缘应该比面板窄几个像素减去垂直滚动条的宽度。(也就是说,它应该足够窄,以便为垂直滚动条留出空间。)
现在运行它,并垂直调整表单的大小,使您希望出现一个垂直滚动条。
问题:两个滚动条都出现了,因为垂直滚动条的存在减少了客户区的宽度,从而迫使水平滚动条出现。
显然.NET首先评估是否需要垂直滚动条,然后评估是否应该出现水平滚动条,这取决于客户端大小是否因垂直滚动条的存在而减小。(即相同的实验不会导致出现不必要的垂直滚动条......只有水平滚动条。)
我正在使用 VB2008 Express,但我猜这会延续到更高版本。
我需要的解决方案:我需要以下任何一种: A)“仅垂直自动滚动”面板。B)我需要一种方法来告诉面板“重新考虑”水平滚动条是否真的必要。(刷新似乎没有这样做。)