.net 如何在C语言中确定面板(包括滚动条)的完整大小#

.net 如何在C语言中确定面板(包括滚动条)的完整大小#,.net,winforms,canvas,scroll,panel,.net,Winforms,Canvas,Scroll,Panel,我遇到的问题是面板的大小是200x200像素。对于我正在编写的程序,在任何给定的时间,我都需要知道这个面板有多大,但这会变得很困难,因为AutoScroll处于打开状态,当插入大内容时,面板会展开(并获得滚动条) 我已经研究了AutoScrollPosition和AutoScrollOffset,甚至尝试在我的解决方案中实现这一点-但它似乎只在滚动条处于某个位置时告诉您有关面板的信息-而在任何给定时间,我都需要知道面板的总大小 因此,基本上,假设一些内容进入面板,并考虑到滚动距离,它实际上变成了

我遇到的问题是面板的大小是200x200像素。对于我正在编写的程序,在任何给定的时间,我都需要知道这个面板有多大,但这会变得很困难,因为AutoScroll处于打开状态,当插入大内容时,面板会展开(并获得滚动条)

我已经研究了AutoScrollPosition和AutoScrollOffset,甚至尝试在我的解决方案中实现这一点-但它似乎只在滚动条处于某个位置时告诉您有关面板的信息-而在任何给定时间,我都需要知道面板的总大小

因此,基本上,假设一些内容进入面板,并考虑到滚动距离,它实际上变成了一个600x750像素的面板。有人知道我有什么办法可以得到这些信息吗


谢谢当面板的内容大于其ClientSize时,AutoScrollMinSize应等于面板的可滚动区域。

包含滚动条的子句使问题无法回答。因为滚动条只应用于DisplayRectangle


您可以从PreferredSize属性获取所需的面板大小,这样就不需要滚动条。您可以从SystemInformation.HorizontalScrollBarHeight和VerticalScrollBarWidth属性中获取滚动条的高度和宽度。

这是WPF应用程序吗?我的回答是基于这样的假设,即没有此属性,但事实证明有:PreferredSize。
AutoScrollMinSize
reports(0,0)在我的测试中,但我的答案是有效的!!;-)嗯,我知道相反的方法是有效的——将大小指定给AutoScrollMinSize会将控件的可滚动区域更改为该大小(假设该大小大于控件的ClientSize)。+1 FWIW我认为“包括滚动条”只是指“当滚动条显示时”。是的,PreferredSize是OP想要的@大卫:我试过你的方法,每个轴上的像素减少了-1,这很奇怪。@Charles PreferredSize与我试过的方法相差4。想想看吧但更喜欢的尺寸似乎是它。但必须检查滚动条是否显示。@David:检查面板的填充和您要放入的内容的边距。这些都会影响结果。@David-是的,Margin属性默认为3。您必须添加滚动条的SmallChange属性值,默认值为1。从我记事起,滚动条就是一个巨大的pita。