重新对齐子控件

时间:2016-01-07 07:46:08

标签: c# visual-studio user-controls

我正在覆盖自定义控件的DisplayRectangle属性;

public override Rectangle DisplayRectangle
    {
        get
        {
            Rectangle rect = ThemeSupporter.GetInnerFrameRect();
            rect.X += Padding.Left;
            rect.Y += Padding.Top;
            rect.Width -= Padding.Left + Padding.Right;
            rect.Height -= Padding.Top + Padding.Bottom;
            return rect;
        }
    }

我的自定义控件的框架会影响儿童控制的对接。每当我对我的控制框架进行更改时,我想重新调整我的子控件。但我找不到一种方法来做到这一点。我想要这样的东西:

public FrameX Frame
{
  get { return FFrameX; }
  set { FFrameX = value; RealignChildControls(); }
}

相反,我像这样调整我的控件

public void ControlResize()
    {
        Control control = GetControl();
        Rectangle oldB = control.Bounds;
        control.SetBounds(oldB.X + 1, oldB.Y + 1, oldB.Width - 1, oldB.Height - 1);
        control.SetBounds(oldB.X, oldB.Y, oldB.Width, oldB.Height);
    }

这会导致额外的闪烁和缓慢..所以有一些方法,如RealignChildControls()?

1 个答案:

答案 0 :(得分:0)

我找到了

control.PerformLayout();

这会重新调整子控件