private void frmWatch_Load(object sender, EventArgs e)
{
FormWidth = this.Width;
FormHeight = this.Height;
SetTag(this);
}
/// <summary>
/// 窗体控件自适应大小
/// </summary>
private float formWidth;
private float formHeight;
public float FormHeight
{
get { return formHeight; }
set { formHeight = value; }
}
public float FormWidth
{
get { return formWidth; }
set { formWidth = value; }
}
/// <summary>
/// 设置Tag标签
/// </summary>
/// <param name="controls">控件</param>
public void SetTag(Control controls)
{
foreach (Control control in controls.Controls)
{
control.Tag = control.Width + ":" + control.Height + ":" + control.Left + ":" + control.Top + ":" + control.Font.Size;
if (control.Controls.Count > 0)
{
SetTag(control);
}
}
}
/// <summary>
/// 设置控件大小
/// </summary>
/// <param name="newX">X坐标</param>
/// <param name="newY">Y坐标</param>
/// <param name="controls">控件</param>
/// <summary>
private void SetControls(float newX, float newY, Control controls)
{
foreach (Control control in controls.Controls)
{
string[] myTag = control.Tag.ToString().Split(':');
//控件的宽
float length = Convert.ToSingle(myTag[0]) * newX;
control.Width = (int)length;
//控件的高
length = Convert.ToSingle(myTag[1]) * newY;
control.Height = (int)length;
//控件的X坐标
length = Convert.ToSingle(myTag[2]) * newX;
control.Left = (int)length;
//控件的Y坐标
length = Convert.ToSingle(myTag[3]) * newY;
control.Top = (int)length;
Single currentSize = Convert.ToSingle(myTag[4])*newY;
control.Font = new System.Drawing.Font(control.Font.Name, currentSize, control.Font.Style, control.Font.Unit);
if (control.Controls.Count > 0)
{
SetControls(newX,newY,control);
}
}
}
/// <summary>
/// 调整控件的大小
/// </summary>
public void ControlResize(Control control)
{
float newX = control.Width / FormWidth;
float newY = control.Height / FormHeight; ;
SetControls(newX,newY,control);
}
private void frmWatch_Resize(object sender, EventArgs e)
{
ControlResize(this);
}
//form的属性AutoSize 默认为faule 不要设置成true