c# winform groupbox上动态生成的控件,如何让控件随着分辨率变化而自动调整位置和大小

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c# winform groupbox上动态生成的控件,如何让控件随着分辨率变化而自动调整位置和大小相关的知识,希望对你有一定的参考价值。

我的groupbox是在panel上的,groupbox也是动态生成的,groupbox可以随着分辨率变化而变化,但是groupbox上冬天生成的好多button和label,在不同分辨率下会显示不全,怎么解决?

最简单的办法就是给groupbox设置一个最小宽度,让button和label刚好能显示出来。

另外呢,也可以这样
你groupbox上动态生成了好多button和label。

那么,如果分辨率小的话,button和label就只能显示一部分,显示不全

我觉得这个时候应该动态设置button和label的width,让它们的width设置为groupbox的宽度的几分之几,随着groupbox宽度的变化而变化。

然后最大宽度设置一直值,当groupbox拉的更大时候,button和label就不变了

但问题是如果groupbox拉的太窄,button肯定会有显示不全的时候,这就是你设计的问题了,不过一般也不会有这么蛋疼的需求。
参考技术A 在groupbox里用tablelayoutPanel之类的做布局,dock为fill,同样你的button之类的dock也视情况用dock来设置。本回答被提问者采纳

如图:c# winform label放在button上,button在groupbox里,如何隐藏N多个label?

foreach (Label col in Controls)

if (col is Label)

((Label)col).Hide();


这个语句只能隐藏不在任何groupbox里的。对于上面的条件 如何修改?

1、在上面新建一个panel 在后台直接控制何时显示与隐藏即可。
2、以上语句要找出label的父容器,判断出父容器就可以控制隐藏显示
参考技术A foreach (Label col in groupbox1.Controls)

if (col is Label)

((Label)col).Hide();


获得的是groupbox里的label。。

不过你有多个groupbox建议用个panel当父容器。
直接
foreach (Label col in panel1.Controls)

if (col is Label)

((Label)col).Hide();

参考技术B 隐藏它干嘛,直接给上面遮一层上去嘛。。。哈哈
panel啊 picturebox啊 都可以嘛!追问

我就是想隐藏 但不想一个一个写

追答

效果一样嘛~~ 一个个隐藏多慢的,
直接新建个层 多块的

参考技术C 先要findcontrol下groupbox

然后再遍历里面的label

以上是关于c# winform groupbox上动态生成的控件,如何让控件随着分辨率变化而自动调整位置和大小的主要内容,如果未能解决你的问题,请参考以下文章

C# winform动态添加控件获取值问题

c# 中如何在GroupBox控件中动态添加与移除控件

C# winform中使用动态加载控件的属性

如图:c# winform label放在button上,button在groupbox里,如何隐藏N多个label?

winform c# groupBox 的边框颜色 怎么设?

c# winform 打印groupbox内容打印预览显示不全