我正在覆盖自定义控件的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()?
答案 0 :(得分:0)
我找到了
control.PerformLayout();
这会重新调整子控件