【发布时间】:2011-03-29 13:25:36
【问题描述】:
我正在尝试找出一种简单的方法来根据父表单的大小重新调整我的子表单的大小。即子窗体弹出父窗体(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(new SizeF((float)dXFactor, (float)dYFactor)); 缩放我的子窗体中的所有控件。
当我使用它时,我假设每当父表单调整大小时,我的子表单也会这样做。显然我在这里遇到了一个问题,子窗体内的所有控件都锚定在左上角。
最初,我的子窗体中的所有控件都是正常大小的。
调整父窗体的大小以使其变小,子窗体也缩小到相同的因子。
现在我将父表单的大小增加到原来的大小。子窗体上的控件大小现在以更高的比例增加。而且这些控件也显得格格不入。
任何人都可以针对这种情况提出更好的方法吗?
干杯
【问题讨论】:
-
您不能锚定您的子控件,以便它们都在各个方向上动态调整大小吗?
-
不,即使我在各个方向锚定 TLBR。我看到我的子表单上的控件超出了正常大小。
-
如何订阅 OnParentResized 事件? c#中没有这样的事件