3

我正在编写一个自定义控件,其中包含一个项目列表(子控件),这些项目可以水平调整大小以适应控件的宽度。如果有很多项目(或者控件被调整大小以至于垂直不够高),那么垂直滚动条是必要的;但是当出现垂直滚动条时,子控件突然太宽,导致出现水平滚动条。

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

4

2 回答 2

2

在计算子控件所需的宽度时,请考虑垂直滚动条的宽度:

System.Windows.Forms.SystemInformation.VerticalScrollBarWidth
于 2011-03-06T17:29:08.090 回答
2

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

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

  1. WS_VSCROLL的测试是通过 P/Invoke 和GetWindowLong()在控件上设置的。
  2. 扫描控件的子控件以获取垂直滚动条控件。

这取决于控件如何处理滚动条,哪个是正确的。

这也是在 Windows 上,而不是在 CF 上,所以我不确定这是否会以完全相同的方式工作。

于 2011-03-06T19:20:29.420 回答