我试图找出一种基于父窗体大小重新调整子窗体大小的简单方法。即子窗体弹出父窗体(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)); 缩放我孩子窗体中的所有控件。
当我使用这个我假设每当父窗体调整大小时,我的子窗体也会如此。显然我在这里面临一个问题,子表单中的所有控件都锚定在左上角。
最初,我的子窗体中的所有控件都是正常大小。
父窗体被调整大小使其缩小,子窗体缩小到相同的因子。
现在我增加我的父表单的大小恢复到原始大小。儿童表格上的控件大小现在增加了一个较高的比例。而且这些控件显得不合适。
任何人都可以为这种情况提出一个更好的方法。
干杯
你不能锚定你的子控件,以便它们都可以动态调整各个方向的大小吗? – FreeAsInBeer 2011-03-29 13:42:05
不,即使我在所有方向锚定TLBR。我看到我的孩子表格上的控件超出了正常尺寸。 – 2011-03-29 13:46:36
你如何订阅OnParentResized事件?在c#中没有这样的事件 – 0x64 2018-02-01 21:22:59