因为最近要写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);
坚持写完这些后,运行程序,放大窗体,你就可以看到控件随着窗体变大了