#region 控件大小随窗体大小等比例缩放
private readonly float x; //定义当前窗体的宽度
private readonly float y; //定义当前窗体的高度
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);
}
}
private void setControls(float newx, float newy, Control cons)
{
string[] mytag;
//遍历窗体中的控件,重新设置控件的值
foreach (Control con in cons.Controls)
{
//获取控件的Tag属性值,并分割后存储字符串数组
if (con.Tag == null)
{
return;
}
mytag = con.Tag.ToString()?.Split(';');
//根据窗体缩放的比例确定控件的值
con.Width = Convert.ToInt32(Convert.ToSingle(mytag?[0]) * newx); //宽度
con.Height = Convert.ToInt32(Convert.ToSingle(mytag?[1]) * newy); //高度
con.Left = Convert.ToInt32(Convert.ToSingle(mytag?[2]) * newx); //左边距
con.Top = Convert.ToInt32(Convert.ToSingle(mytag?[3]) * newy); //顶边距
var currentSize = Convert.ToSingle(mytag?[4]) * newy; //字体大小
if (currentSize > 0) con.Font = new Font(con.Font.Name, currentSize, con.Font.Style, con.Font.Unit);
con.Focus();
if (con.Controls.Count > 0) setControls(newx, newy, con);
}
mytag = null;
}
/// <summary>
/// 重置窗体布局
/// </summary>
private void ReWinformLayout()
{
var newx = Width / x;
var newy = Height / y;
setControls(newx, newy, this);
}
#endregion 控件大小随窗体大小等比例缩放
#region 初始化控件缩放
x = Width;
y = Height;
setTag(this);
#endregion 初始化控件缩放