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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#,实现窗口大小改变时窗口内的控件自动调整位置和大小时,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内的控件不变化。。。
问题已解决,不是属性设置的问题,又添加了一段代码,解决的

参考技术A scale一直没变。 参考技术B 设置属性 参考技术C 在属性里面有一个控件与窗体距离的属性,把它设置一下就行了本回答被提问者和网友采纳

控件的自动伸缩调整

说明

    自定义控件,控件会随着父窗口的尺寸变换,而进行调整,在这里就必须实现OnPaint函数,根据不同的父窗口的大小,相应的进行子窗口的调整。这里有一个经验:创建一个比例尺因子,当控件的宽和高发生改变的情况下,内容的渲染应该在什么地方进行描绘。


    wxSize DoGetBestSize() const { return wxSize(600, 800);}当不指定控件的尺寸的时候,也就是指定wxDefaultSize的时候调用,当然也可以不实现,在自定义控件的例子中,就没有

以上是关于C#,实现窗口大小改变时窗口内的控件自动调整位置和大小时,groupbox内的控件为啥不自动调整??求解的主要内容,如果未能解决你的问题,请参考以下文章

如何实现控件随对话框大小变化而自动调整大小和位置

vs2008,c#,我想修改窗口控件的位置和大小。

c# winform 窗口大小 控件位置

mfc 窗口大小变化时,如何让窗口内部控件也一起随比例改变位置?

PyQt5 中当窗口大小改变时,如何去调整控件的位置以适应窗口大小改变的思考

QT中控件如何随着窗口大小的改变而使它充满整个窗口空间