부모 폼의 크기를 기반으로 내 자식 폼의 크기를 쉽게 바꿀 수있는 방법을 찾으려고합니다. 즉, 자식 폼이 부모 폼 (FixedToolWindow)에서 튀어 나오게됩니다.부모 크기 조정시 자식 폼 컨트롤 크기 조정
현재이 작업을 수행하려면 양식 내 자식 클래스에 OnParentResize 이벤트가 있어야합니다. 즉
void OnParentResized(object sender, EventArgs e)
{
//Resize of the form shall be made only when the form is not minimized
if (parent.WindowState != FormWindowState.Minimized)
{
int iWidth = parent.Size.Width;
int iHeight = parent.Size.Height;
double dXFactor = (double)iWidth/(double)this.Width;
double dYFactor = (double)iHeight/(double)this.Height;
this.Scale(new SizeF((float)dXFactor, (float)dYFactor));
}
}
라인이 this.scale (새 SizeF ((플로트) dXFactor (플로트) dYFactor)); 은 내 자식 폼의 모든 컨트롤을 조절합니다.
나는 이것을 사용할 때마다 부모 양식의 크기가 조정될 때마다 내 자식 양식도 마찬가지라고 생각합니다. 분명히 여기에 문제가 생기면 자식 폼 안의 모든 컨트롤이 왼쪽 상단에 고정됩니다.
처음에 내 자녀 양식의 모든 컨트롤은 정상 크기입니다.
부모 양식의 크기가 작아 지도록 크기가 조정되면 하위 양식도 동일한 요인으로 축소됩니다.
이제 상위 폼의 크기를 원래 크기로 늘립니다. 하위 폼에있는 컨트롤의 크기가 이제는 더 높은 비율로 증가합니다. 또한 컨트롤이 제자리에 나타나지 않습니다.
누구나 이러한 상황에 대해 더 나은 방법을 제안 할 수 있습니까?
건배
자녀 컨트롤을 모든 방향으로 동적으로 조정할 수 있습니까? – FreeAsInBeer
아니, 모든 방향 TLBR에 앵커라도. 내 자식 폼의 컨트롤이 정상 크기를 초과하여 커지는 것을 봅니다. –
OnParentResized 이벤트는 어떻게 구독하나요? C#에는 그러한 이벤트가 없습니다. – 0x64