c#控件随着窗体放大而放大

因为最近要写c# 窗体程序,所以边写边来记录,这是我遇到的第一个问题,”小窗体自适应大窗体“在网上找了好多解决方法,终于找到了一个,以下是原文链接,我也再次学习一下。http://www.cnblogs.com/sakalaka/p/5135230.html,再次感谢这位博主。

1.首先定义两个变量

private float x;//定义当前窗体的宽度
private float y;//定义当前窗体的高度

2.将控件的宽,高,左边距,定边距,字体大小暂存在tag 属性中
private void setTag(Control cons)
{
foreach(Control con in cons.Controls)
{
con.Tag=con.Width+";"+con.Height+";"+con.Left+";"+con.Top+";"+con.Font.Size;
if(con.Controls.Count>0)
{
setTag(con);
}
}
}

3.根据窗体的大小控制控件的大小
private void setControls(float newx,float newy,Control cons)
{
//遍历窗体中的控件,重新设置控件的值
foreach(Control con in cons.Controls)
{
//获取控件的Tag属性值,并分割后存储字符串数组
string [] mytag=con.Tag.ToString().Split(new char[]{’;’});
//根据窗体缩放的比例确定控件的值,宽度
con.Width=Convert.ToInt32(System.Convert.ToSingle(mytag[0])*newx));
con.Height=Convert.ToInt32(System.Convert.ToSingle(mytag[1])*newy);//高度
con.Left=Convert.ToInt32(System.Convert.ToSingle(mytag[2])*newx);//左边距
con.Top=Convert.ToInt32(System.Convert.ToSingle(mytag[3])*newy);//顶边距
Single currentSize=System.Convert.ToSingle(mytag[4])*newy;//字体大小
con.Font=new Font(con.Font.Name,currentSize,con.Font.Style,con.Font.Unit);
if(con.Controls.Count>0)
{
setControls(newx,newy,con);
}

}

}

4.在窗体的load事件中
x=this.Width;
y=this.Height;
setTag(this);

5.在窗体的Resize事件中
float newx=(this.Width) /x;
float newy=(this.Height) /y;
setControls(newx,newy,this);

坚持写完这些后,运行程序,放大窗体,你就可以看到控件随着窗体变大了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值