【发布时间】:2016-06-22 21:20:48
【问题描述】:
我有一个具有水平滚动条的 C# 面板,因此 DisplayRectangle 的宽度应该大于 ClientRectangle,但 DisplayRectangle 等于 ClientRectangle。如何使面板返回正确的 DisplayRectangle 大小?我正在使用它来自动滚动面板并截取面板的全部内容。
Rectangle dispRect = panel.DisplayRectangle;
Rectangle cRect = panel.ClientRectangle;
不幸的是 dispRect == cRect。
【问题讨论】:
-
您使用的是哪个 GUI 框架?你需要知道的究竟是什么?显示给用户的窗口大小?
-
这个问题有些可疑。如果 DisplayRectangle 等于 ClientRectangle 则面板应该不显示滚动条。滚动条仅在 DisplayRectangle > ClientRectangle 时可见。水晶球说您实际上在面板上放置了一个 HScrollBar。好吧,不要那样做。
-
我正在使用 WinForms。另一件奇怪的是,HScroll 是假的,HorizontalScroll.Visible==false。当我查看表单时,有一个水平滚动条。此外,面板将 AutoScroll 设置为 true。我尝试调用 Invalidate() 来尝试为 DisplayRectangle 获取正确的大小,但大小没有改变。我没有像汉斯所说的那样在面板上放置一个 HScrollBar 可能是真的。我正在尝试获取面板的完整尺寸,但目前,它只返回可见的尺寸。有没有办法强制面板重新计算 DisplayRectangle?