如何使子窗体的大小随父窗体变化而变化
如题
[解决办法]
在FORM的RESIZE事件中控制子窗体
[解决办法]
事先确定好各个子窗体与父窗体的比例,在父窗体的Resize事件中根据父窗体的大小计算并设置各个子窗体的位置和大小。
[解决办法]
可以在父窗体的Resize事件中控制子窗体的Top,Left,Width,Height等属性
[解决办法]
http://topic.csdn.net/u/20090817/00/01bba0c6-eafb-4b88-bbbf-789ac5b9beb6.html
[解决办法]
- C# code
bool isno = false;//控制是否第一次改变。因为第一次打开主窗体里就会执行Resize事件 int IntoHeight, IntoWidth;//放入每次改变时的父窗体值 float TempHeight, TempWidth;//获得每次放大放小的比例值 private void main_Load(object sender, EventArgs e) { isno = true; IntoHeight = this.Height; IntoWidth = this.Width; } private void main_Resize(object sender, EventArgs e) { if (isno) { TempHeight = float.Parse(this.Height.ToString()) / float.Parse(this.IntoHeight.ToString()); TempWidth = float.Parse(this.Width.ToString()) / float.Parse(this.IntoWidth.ToString()); IntoHeight = this.Height; IntoWidth = this.Width; ChangAllChildRenSize(); } } public void ChangAllChildRenSize() { foreach (Form tempChildForm in this.MdiChildren) { tempChildForm.Height = int.Parse(Convert.ToString(Math.Round(tempChildForm.Height * TempHeight,0))); tempChildForm.Width = int.Parse(Convert.ToString(Math.Round(tempChildForm.Width * TempWidth,0))); } }
[解决办法]
[解决办法]
- C# code
private void test_Click(object sender, EventArgs e) { //MessageBox.Show(((float)52 / (float)45).ToString() + "qq"); Form2 subform = new Form2(); subform.MdiParent = this; subform.Show(); if (this.WindowState == FormWindowState.Normal) { foreach (Form obj in this.MdiChildren)//obj.Width / obj.Height I will know it soon. { changeW = (double)this.Width / (double)obj.Width; changeH = (double)this.Height / (double)obj.Height; } } } private void Form1_SizeChanged(object sender, EventArgs e) { Form2 subform = new Form2();// if (this.WindowState == FormWindowState.Maximized) { foreach (Form obj in this.MdiChildren) { obj.WindowState = FormWindowState.Maximized; obj.Show(); } } if (this.WindowState == FormWindowState.Normal) { foreach (Form obj in this.MdiChildren)//obj.Width / obj.Height { double a = (double)this.Width / changeW; if (a.ToString() != string.Empty) { obj.Width = int.Parse(Convert.ToString(Math.Round(a,0))); } double b = (double)this.Height / changeH; if (b.ToString() != string.Empty) { obj.Height = int.Parse(Convert.ToString(Math.Round(b, 0)));//float转换为int型时,“.”不能转换要注意 } } } }
[解决办法]
- C# code
private void Form1_SizeChanged(object sender, EventArgs e) // 窗体大小变化事件 { 控件.高度 = ; 控件.宽度 = ; 控件.坐标 = ; }