winform 控件随窗体的变化而变化

本文介绍了如何使WinForm应用中的控件在窗体大小改变时能自动调整,以保持布局的完整性。通过设置窗体的最小尺寸避免格局破坏,并提供了一个名为AutoScale的方法,该方法利用比例缩放确保控件随着窗体尺寸的变化而相应调整。在窗体加载时调用此方法,可以实现控件的自适应效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

winform在排版页面格局时,可以使用layoutcontrol对控件进行排版,但是排列起来比较麻烦,要用到很多emptyspaceitem(我只这样弄的,不知道其他的人怎么弄,也许是我用的不熟练的原因)。网上也有很多的关于控件如何随窗体变化而变化,下面我总结了一下用的比较好用的,并自己稍微完善了一下。

设置窗体最小尺寸,即miniumsize属性,不能拖拽窗体变小。否则窗体变小的话,一些字体并不随之改变,会使格局发生变化。

public void AutoScale(Form frm)

        {

            frm.Tag = frm.Width.ToString()+ "," + frm.Height.ToString();

           

            frm.SizeChanged += newEventHandler(frm_SizeChanged);

        }

        staticvoid frm_SizeChanged(object sender, EventArgs e)

        {

            string[]tmp = ((Form)sender).Tag.ToString().Split(',');

            floatwidth = (float)((Form)sender).Width / (float)Convert.ToInt16(tmp[0]);

            floatheigth = (float)((Form)sender).Height / (float)Convert.ToInt16(tmp[1]);

 

            ((Form)sender).Tag = ((Form)sender).Width.ToString() + ","+ ((Form)sender).Height;

 

            foreach(Control controlin ((Form)sender).Controls)

            {

                control.Scale(new SizeF(width, heigth));

 

            }

        }

 

 

        privatevoid Form_Load(object sender, EventArgs e)

        {

            CommonFunctionsfun = new CommonFunctions();

            fun.AutoScale(this);

        }



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值