C# 重新对齐子控件
我正在重写自定义控件的DisplayRectangle属性C# 重新对齐子控件,c#,visual-studio,user-controls,C#,Visual Studio,User Controls,我正在重写自定义控件的DisplayRectangle属性 public override Rectangle DisplayRectangle { get { Rectangle rect = ThemeSupporter.GetInnerFrameRect(); rect.X += Padding.Left; rect.Y += Padding.Top; r
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()这样的方法?我找到了
control.PerformLayout();
这将重新调整子控件