先编写类
//***控制控件大小及文字大小的开始***//
public 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);
}
}
}
public void setControls(float newx, float newy, Control cons)//重新调整控件的位置、大小、字体大小
{
foreach (Control con in cons.Controls)//循环遍历控件集,进行比例缩放
{
string[] mytag = con.Tag.ToString().Split(new char[] { ':' });
float a = Convert.ToSingle(mytag[0]) * newx;
con.Width = (int)(a);
a = Convert.ToSingle(mytag[1]) * newy;
con.Height = (int)(a);
a = Convert.ToSingle(mytag[2]) * newx;
con.Left = (int)(a);
a = Convert.ToSingle(mytag[3]) * newy;
con.Top = (int)(a);
Single currentSize = Convert.ToSingle(mytag[4]) * Math.Min(newx, newy);
con.Font = new Font(con.Font.Name, currentSize, con.Font.Style, con.Font.Unit);
if (con.Controls.Count > 0)//处理子控件
{
setControls(newx, newy, con);
}
}
}
再在窗体加载事件中写入
Change changes = new Change();//实例化对象
this.Resize += new EventHandler(Form_Resize);//在改变窗体大小时调用方法Form_Resize
X = this.Width;//获取窗体宽度
Y = this.Height;//获取窗体高度
changes.setTag(this);//使用change类中的setTag方法,并传值
Form_Resize(new object(), new EventArgs());
声明全局变量
private float X;//私有变量存宽度
private float Y;//私有变量存高度
声明全局方法
void Form_Resize(object sender, EventArgs e)
{
Change changes = new Change();//实例化对象
float newx = (this.Width) / X;//获取新的宽度与原宽度的比值
float newy = (this.Height) / Y;//获取新的高度与原高度的比值
if (newx != 0 && newy != 0)
{
changes.setControls(newx, newy, this); //使用change类中的setControls方法,并传值
}
}