C# code
/// <summary> /// 窗口改变后控件变化 /// </summary> float x = 0 ; float y = 0 ; private void Frm_Resize( object sender, System.EventArgs e) { float newx = ( this .Width ) / x; float newy = this .Height / y; setConstrols(newx, newy, this ); } 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 setConstrols( 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 ]) * newy; con .Font = new Font (con.Font .Name ,currentSize,con.Font .Style ,con.Font .Unit ); if (con.Controls .Count > 0 ) { setConstrols (newx ,newy ,con ); } } } private void Frm_Load( object sender, System.EventArgs e) { x = this .Width ; y = this .Height ; setTag( this ); this.Resize +=new EventHandler(Frm_Resize);
}