我有一个用户控件,其中包含一组控件,这些控件可用于在 UI 上呈现数据。我已经尝试实现一个“弹出”选项,它将从表单上的另一个容器(例如面板)重新设置控件的父级,创建一个新的选项卡页,然后将控件添加到选项卡页。
不幸的是,当控件被添加到 TabPage 时,它的大小似乎被锁定为它与最后一个父级一起呈现的方式。
我覆盖了 ParentChanged 事件以检测控件何时实际添加到 TabPage。如果我检查大小,尝试将大小设置为 TabPage 的 ClientRectangle,然后重新检查大小 - 它不会改变。设置 Dock 属性不会改变这种行为(尤其是 Fill)。
protected override void OnParentChanged(EventArgs e)
{
if (this.Parent != null)
{
Size oldSize = this.Size;
this.Size = this.Parent.ClientRectangle.Size;
if (this.Size == oldSize)
{
// this is where we end up
throw new Exception("We didn't change size!");
}
}
}