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

初始化时:

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方法,不行。

第1个回答  2013-11-08
用递归,你的foreach 只遍历到GroupBox控件,没有遍历到Groupbox里面的控件本回答被网友采纳
第2个回答  2013-11-06
你的groupbox是不是已经设置了对齐了,如果是的话有可能程序修改不了。追问

不是groupbox不能调整大小,是里面的控件

追答

那我知道了,你在循环的时候也将groupBox1.Controls中的控件循环一边,不能只循环this中的控件。

追问

你知道,我不知道有毛用。你会倒也是给出具体解决方法啊

第3个回答  2013-11-06
我来说的话还是要用Anchor属性,你GroupBox中的控件也设置这个属性了吗。

说这样不行,你贴个你的窗体的图片出来看看才好让人理解解决啊。追问

自动调整时,groupbox会随着变化,而里面的控件大小却不变

C#,实现窗口大小改变时窗口内的控件自动调整位置和大小时,groupbox内...
用递归,你的foreach 只遍历到GroupBox控件,没有遍历到Groupbox里面的控件

C#控件的位置和大小随窗体大小的变化而变化
Anchor属性为None则该控件的位置一直处于窗体的相对位置上 也可以使用FlowLayoutPanel控件规划Form的控件位置。 本回答由电脑网络分类达人 刘杰推荐 举报| 答案纠错 | 评论 16 1 njgcwjr 采纳率:58% 擅长: 办公软件 C#\/.NET 数据库DB 其他回答 窗体程序只能手动的在formsizechanged响应里通过代码调整窗体大小改变时...

c# 问题,最大化窗口时如何使里面的控件根据比例同样放大,相对位置也不...
Anchor属性可以设跟随着窗口的大小变化而变化。还有一个Dock属性 这两个属性应该可以满足你要的效果 详细可以Hi聊

C#datagridview边框随着窗体的改变而改变?我的这个程序,默认大小正好...
选中datagridview 然后点击属性 选择里面的Anchor属性 然后去设置你要改变的位置 选中哪个方向 控件就会在窗体发生改变的时候自动往那边填充。

C#程序:实现窗体和控件的自由缩放的代码或属性
这个简单:首先点击你窗体中的控件,看属性栏找布局里的Anchor 改属性:Top,Bottom变成 Top,Bottom,Left,Right。

c#中窗体中的控件如何随窗体大小变化
可以通过控件的Anchor属性来设置你想要的控件随窗体变化时的大小布局变化。resize事件是在调整大小时发生也就是先触发这个事件,然后才改变大小;sizechanged事件则是当大小已经改变后才触发的。有关的事件发生情况,在MSDN里各个事件中都有说明的,你也可以做一个例子,设置好事件,然后通过加断点调试的方式来...

C#中怎么使控件随着窗体的大小改变而改变
强烈建议 将Form的FormBorderStyle属性由Sizeable修改为Fix开头的 因为一个登录窗体改变大小是没有意义的 下面回答下你的问题 图片和字一起 那么把他们放到panel里面就没你这样的问题了 能改变大小的窗体控件摆放很是费劲, 常用方法就那几个:Panel里放控件、anchor属性修改 minsize maxsize属性控制 ...

C#中控件怎么按窗口比例改变大小
Dock 只有选择Fill的时候才会按照窗口改变大小,其他只是改变位置 如果你是想让Listview等随着窗口自动调整大小,那确实可以使用DOCK属性 具体做法是如果整个窗口只有一个Listview控件,那么你可以直接选择DOCK的属性为Fill,如果你有好多控件,那么建议先使用SplitContainer,然后把ListView置于其中一个Paint中,然后...

c# winform问题,最大化窗口时如何使里面的控件根据比例同样放大,相对...
在窗体的Resize事件里添加代码,\\x0d\\x0a如下:\\x0d\\x0a此处以splitContainer控件为例,你可以换成任意你需要设置的控件名称\\x0d\\x0aprivate void Form1_Resize(object sender, EventArgs e)\\x0d\\x0a {\\x0d\\x0a splitContainer1.Top = Height \/ 3;\/\/控件距离界面上边缘始终为界面...

C#(vs2008)中如何实现控件随对话框大小变化而自动调整大小和位置
每个空间都有个Anchor的属性,这个属性控制控件与容器边框距离绑定的。。设置他可以使调整对话框大小时候,控件自动调整大小和位置。。

相似回答