C#,实现窗口大小改变时窗口内的控件自动调整位置和大小时,groupbox内的控件为什么不自动调整 20

初始化时:InitializeComponent();intcount=this.Controls.Count*2+2;float[]factor=newfloat[co... 初始化时:

InitializeComponent();
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事件:

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);

}
说明:百度知道离回答http://zhidao.baidu.com/question/421384385.html里有,不过没说清楚,不要说要用anchor和DOCK方法,不行。
展开
 我来答
710015573
2013-11-08 · 超过19用户采纳过TA的回答
知道答主
回答量:41
采纳率:100%
帮助的人:29.3万
展开全部
用递归,你的foreach 只遍历到GroupBox控件,没有遍历到Groupbox里面的控件
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yw187142046
2013-11-06 · TA获得超过222个赞
知道小有建树答主
回答量:552
采纳率:100%
帮助的人:429万
展开全部
你的groupbox是不是已经设置了对齐了,如果是的话有可能程序修改不了。
更多追问追答
追问
不是groupbox不能调整大小,是里面的控件
追答
那我知道了,你在循环的时候也将groupBox1.Controls中的控件循环一边,不能只循环this中的控件。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
v雪地里的猫
2013-11-06 · TA获得超过863个赞
知道小有建树答主
回答量:401
采纳率:100%
帮助的人:237万
展开全部
我来说的话还是要用Anchor属性,你GroupBox中的控件也设置这个属性了吗。

说这样不行,你贴个你的窗体的图片出来看看才好让人理解解决啊。
追问
自动调整时,groupbox会随着变化,而里面的控件大小却不变
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式