C# 控件如何随窗体变大而变大

来源:互联网 发布:免费作曲软件 编辑:程序博客网 时间:2024/05/17 06:27
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);
}
文献来源:http://topic.csdn.net/u/20080508/10/04a88493-a69e-407f-bf7d-fd4b9753e75b.html
原创粉丝点击