C#窗體控件隨窗體大小變動

public Form1()
{
    InitializeComponent();
    x = this.Width;
    y = this.Height;
    setTag(this);
}

#region 控件大小隨窗體大小等比例縮放
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)
    {
        //獲取控件的Tag屬性值,並分割後存儲字符串數組
        if (con.Tag != null)
        {
            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.ToSingle(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);
            }
        }
    }
}
private void Form1_Resize(object sender, EventArgs e)
{
    float newx = (this.Width) / x;
    float newy = (this.Height) / y;
    setControls(newx, newy, this);
}

#endregion

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章