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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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方法,不行。

参考技术A 用递归,你的foreach 只遍历到GroupBox控件,没有遍历到Groupbox里面的控件 参考技术B 你的groupbox是不是已经设置了对齐了,如果是的话有可能程序修改不了。追问

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

追答

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

追问

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

参考技术C 我来说的话还是要用Anchor属性,你GroupBox中的控件也设置这个属性了吗。

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

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

XAML 调整窗口大小和窗口内的所有元素

【中文标题】XAML 调整窗口大小和窗口内的所有元素【英文标题】:XAML Resizing window and all elements inside window 【发布时间】:2020-10-26 02:16:31 【问题描述】:

我有一个用 C# 和 XAML 编写的游戏,但我遇到了一个问题。我一直在创建游戏的笔记本电脑有一个 4k 显示器,所以我(愚蠢地)将 XAML 制作成 4k 窗口的规格。如您所料,当我尝试在较低分辨率的显示器上运行它时,所有元素的大小和位置都错误。重做窗口中的所有内容会非常痛苦,我想知道是否有任何方法可以根据窗口大小缩放整个窗口及其所有内容?

我对可能值得探索的潜在解决方案的一些想法:

    有没有办法获取窗口的大小并修改所有元素及其位置/边距等,以便它们随窗口缩放?

    有没有办法制作一个包含游戏窗口的 4k 窗口,但窗口本身会缩放,这样游戏窗口就不必进行任何缩放工作,因为它会随着包含它的窗口自动缩放?

如果您有任何问题可以帮助您更好地了解我的问题或我的潜在解决方案建议,请告诉我。

【问题讨论】:

【参考方案1】:

使用 Viewbox 将完成我想做的事情。

【讨论】:

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

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

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

c# winform 窗口大小 控件位置

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

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

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