当宽度相等时,子控制大于父级

时间:2012-12-08 20:45:28

标签: c# winforms

我正在尝试调整自定义面板控件的大小,以便它在宽度方面适合父容器。当我检查控件值时,它们都是相同的,但是子控件对于父控件来说太宽了。

造成这种差异的原因是什么?我希望能够计算出正确的尺寸。我尝试更改填充和边距选项,但这没有任何效果。

Extends too far to the right

[Category("Collapsible Panel")]
[DesignOnly(true)]
[DefaultValue(false)]
[Description("If True, fits the panel to match the parent width")]
public bool FitToParent
{
    get { return _fitToParent; }
    set { 
        _fitToParent = value;
            if (_fitToParent)
            {
                if (this.Parent != null)
                {
                    this.Location = new Point(0, this.Location.Y);
                    this.Size = new Size(this.Parent.Size.Width, this.Size.Height);
                    this.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
                }
            }
            else
            {
                this.Anchor = AnchorStyles.Top | AnchorStyles.Left;
            }
    }
}

1 个答案:

答案 0 :(得分:2)

使用表单和控件的ClientSize

control.ClientSize.Width

form.Widthcontrol.Width是包含边框的外部宽度。 ClientRectangle是可以放置其他控件的边框之间的内容,ClientSize是此内部矩形的大小。