我有一個用戶控件,其中包含一組控件,以便在UI中呈現數據時重用它們。我已經嘗試實現「彈出」選項,將重新從父窗體上的另一個容器控件(一個面板,例如),創建一個新的標籤頁,然後將控件添加到標籤頁。如何修改已重新添加到TabPage的控件?
不幸的是,當控件添加到TabPage時,它的大小似乎被鎖定到最後一個父對象的顯示方式。
我覆蓋了ParentChanged事件來檢測控件何時實際添加到TabPage。如果我檢查大小,請嘗試將大小設置爲TabPage的ClientRectangle,然後重新檢查大小 - 它不會更改。設置Dock屬性不會改變這種行爲(尤其是填充)。
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!");
}
}
}