C#,实现窗口大小改变时窗口内的控件自动调整位置和大小时,groupbox内的控件为什么不自动调整??求解
代码如下:构造函数中:添加如下代码intcount=this.Controls.Count*2+2;float[]factor=newfloat[count];inti=...
代码如下:
构造函数中:添加如下代码
int count = this.Controls.Count * 2 + 2;
float [] factor=new float [count];
int i = 0;
factor[i++] = Size.Width;
factor[i++] = Size.Height;
foreach (Control ctrl in this.Controls)
{
factor[i++] = ctrl.Location.X / (float)Size.Width;
factor[i++] = ctrl.Location.Y / (float)Size.Height;
ctrl.Tag = ctrl.Size;
}
Tag = factor;
Resize事件中自动调整大小
private void Summary_Resize(object sender, EventArgs e)
{
float[] scale = (float[])Tag;
int i = 2;
foreach (Control ctrl in this.Controls)
{
ctrl.Left = (int)(Size.Width * scale[i++]);
ctrl.Top = (int)(Size.Height * scale[i++]);
ctrl.Width = (int)(Size.Width / (float)scale[0] * ((Size)ctrl.Tag).Width);
ctrl.Height= (int)(Size.Height / (float)scale[1] * ((Size)ctrl.Tag).Height);
}
}
窗口内控件的位置和大小会按照窗口变化的比例相应的自动调整位置和大小,且GroupBox本身的位置和大小也自动调整,但是GroupBox内的控件不变化。。。
问题已解决,不是属性设置的问题,又添加了一段代码,解决的 展开
构造函数中:添加如下代码
int count = this.Controls.Count * 2 + 2;
float [] factor=new float [count];
int i = 0;
factor[i++] = Size.Width;
factor[i++] = Size.Height;
foreach (Control ctrl in this.Controls)
{
factor[i++] = ctrl.Location.X / (float)Size.Width;
factor[i++] = ctrl.Location.Y / (float)Size.Height;
ctrl.Tag = ctrl.Size;
}
Tag = factor;
Resize事件中自动调整大小
private void Summary_Resize(object sender, EventArgs e)
{
float[] scale = (float[])Tag;
int i = 2;
foreach (Control ctrl in this.Controls)
{
ctrl.Left = (int)(Size.Width * scale[i++]);
ctrl.Top = (int)(Size.Height * scale[i++]);
ctrl.Width = (int)(Size.Width / (float)scale[0] * ((Size)ctrl.Tag).Width);
ctrl.Height= (int)(Size.Height / (float)scale[1] * ((Size)ctrl.Tag).Height);
}
}
窗口内控件的位置和大小会按照窗口变化的比例相应的自动调整位置和大小,且GroupBox本身的位置和大小也自动调整,但是GroupBox内的控件不变化。。。
问题已解决,不是属性设置的问题,又添加了一段代码,解决的 展开
3个回答
展开全部
scale一直没变。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
设置属性
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在属性里面有一个控件与窗体距离的属性,把它设置一下就行了
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询