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

来源:互联网 发布:战舰世界排位赛数据 编辑:程序博客网 时间:2024/05/16 10:36
PC环境win10,编译器visual studio2015

private float X;private 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)        {            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]) * Math.Min(newx,newy);                con .Font =new Font (con.Font .Name ,currentSize,con.Font .Style ,con.Font .Unit );                if(con.Controls .Count >0)                {                    setControls (newx ,newy ,con );                }            }        }        void Form1_Resize(object sender, EventArgs e)        {            float  newx = (this.Width )/ X;            float newy = this.Height / Y;            setControls(newx, newy, this);            this.Text = this.Width.ToString() +" "+ this.Height.ToString();        } //在Form_Load里面添加:  this.Resize += new EventHandler(Form1_Resize);      X = this.Width;    Y = this.Height;       setTag (this);  Form1_Resize(new object(),new EventArgs());//x,y可在实例化时赋值,最后这句是新加的,在MDI时有用


源码免费下载地址:点击下载

0 0
原创粉丝点击