1. 程式人生 > >c# 窗體放大窗體中的控制元件也隨著窗體放大

c# 窗體放大窗體中的控制元件也隨著窗體放大

因為最近要寫c# 窗體程式,所以邊寫邊來記錄,這是我遇到的第一個問題,”小窗體自適應大窗體“在網上找了好多解決方法,終於找到了一個,以下是原文連結,我也再次學習一下。http://www.cnblogs.com/sakalaka/p/5135230.html,再次感謝這位博主。大笑

1.首先定義兩個變數

private float x;//定義當前窗體的寬度
private float y;//定義當前窗體的高度

2.將控制元件的寬,高,左邊距,定邊距,字型大小暫存在tag 屬性中
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);
        }
    }
}

3.根據窗體的大小控制控制元件的大小
private void setControls(float newx,float,newy,Control cons)
{
     //遍歷窗體中的控制元件,重新設定控制元件的值
     foreach(Control con in cons.Controls)
    {
         //獲取控制元件的Tag屬性值,並分割後儲存字串陣列
         string [] mytag=con.Tag.ToString().Split(new char[]{';'});
         //根據窗體縮放的比例確定控制元件的值,寬度
          con.Width=Convert.ToInt32(System.Convert.ToSingle(mytag[0])*newx));
          con.Height=Convert.ToInt32(System.Convert.ToSingle(myTag[1])*newy);//高度
          con.Left=Convert.ToInt32(System.Convert.ToSingle(myTag[2])*newx);//左邊距
           con.Top=Convert.ToInt32(System.Convert.ToSigle(myTag[3])*newy);//頂邊距
           Single currentSize=System.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);
           }
          
    }
}


4.在窗體的裝入事件中
x=this.Width;
y=this.Height;
setTag(this);

5.在窗體的Resize事件中
float newx=(this.Width) /x;
float newy=(this.Height) /y;
setControls(newx,newy,this);

堅持寫完這些後,執行程式,放大窗體,你就可以看到控制元件隨著窗體變大了

在文章的結尾再次感謝這位博主再見