UI에 데이터를 표시하기 위해 다시 사용할 컨트롤 컬렉션이 포함 된 사용자 정의 컨트롤이 있습니다. 폼 (예 : Panel)의 다른 컨테이너에서 컨트롤을 다시 부모로 만들고, 새 탭 페이지를 만든 다음 컨트롤을 탭 페이지에 추가하는 "팝 아웃"옵션을 구현하려고했습니다.TabPage로 다시 태어난 컨트롤을 어떻게 수정합니까?
컨트롤이 TabPage에 추가되면 크기가 마지막 부모와 함께 고정 된 것처럼 보입니다.
컨트롤이 실제로 TabPage에 추가 된시기를 감지하기 위해 ParentChanged 이벤트를 오버로드했습니다. 크기를 검사하고 크기를 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!");
}
}
}