窗体控件随窗体大小改变自动计算并改变控件大小(包括字体大小)

核心代码:

      //全局变量
   private float X,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]) * 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)
        {
           // throw new Exception("The method or operation is not implemented.");
            float  newx = (this.Width )/ X;
          //  float newy = (this.Height - this.statusStrip1.Height) / (Y - y);
            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; 
            y = this.statusStrip1.Height; 
            setTag (this);

猜你喜欢

转载自blog.csdn.net/weixin_39237340/article/details/112775530