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