Winforms 什么';这是计算控件的最简单方法;内部显示矩形(减去填充)?

Winforms 什么';这是计算控件的最简单方法;内部显示矩形(减去填充)?,winforms,label,Winforms,Label,控件在.DisplayRectangle中报告其显示矩形——如果设置了.Padding,找到控件可用区域的最简单方法是什么? 例如,标签的.DisplayRectangle始终等于.ClientRectangle,即使.Padding不是(0,0,0)。在注意了.Padding设置(以及任何可能限制“net”显示区域的附加属性)之后,我想获得.ClientRectangle中矩形的大小 是否有某种方法或其他框架支持的方法来实现这一点?我是否必须重新编码框架代码中可能已经存在的所有矩形计算?填充并

控件在
.DisplayRectangle
中报告其显示矩形——如果设置了
.Padding
,找到控件可用区域的最简单方法是什么?

例如,
标签
.DisplayRectangle
始终等于
.ClientRectangle
,即使
.Padding
不是
(0,0,0)
。在注意了
.Padding
设置(以及任何可能限制“net”显示区域的附加属性)之后,我想获得
.ClientRectangle
中矩形的大小


是否有某种方法或其他框架支持的方法来实现这一点?我是否必须重新编码框架代码中可能已经存在的所有矩形计算?

填充并不仅仅是对显示矩形的直接修改。有些内置控件会将其考虑在内,有些则不会

最好是阅读文档中的填充,看看哪些部分适用于您

希望达到目标的简单答案是“不,没有框架方法。像下面这样构建自己的框架方法”

谢谢这就是重点——dox在.Padding的某些方面相当模糊。我们必须估计哪个控件使用。填充方式是什么。
private Rectangle GetPaddedRectangle(Control control)
{
    var rect = control.ClientRectangle;
    var pad = control.Padding;
    return new Rectangle( rect.X + pad.Left, 
                          rect.Y + pad.Top, 
                          rect.Width - (pad.Left+pad.Right), 
                          rect.Height - (pad.Top+pad.Bottom));
}