1. 程式人生 > >C#窗體設計:自動調整控制元件大小

C#窗體設計:自動調整控制元件大小

  1. 新建一個C#應用程式,應用程式命名為Change

    C#窗體設計:[9]自動調整控制元件大小

  2. 窗體介面設計如下

    C#窗體設計:[9]自動調整控制元件大小

  3. 雙擊窗體新增Load()函式,函式中新增一下程式碼:

    private void Form1_Load(object sender, EventArgs e)

            {

                this.Resize += new EventHandler(Form1_Resize);//窗體調整大小時引發事件

     

                X = this.Width;//獲取窗體的寬度

                Y = this.Height;//獲取窗體的高度

                setTag(this);//呼叫方法

            }

    C#窗體設計:[9]自動調整控制元件大小

  4. 獲取控制元件的width、height、left、top、字型大小的值,新增一下程式碼:

    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);

                }

            }

    C#窗體設計:[9]自動調整控制元件大小

  5. 根據窗體大小調整控制元件大小,新增一下程式碼:

            private void setControls(float newx, float newy, Control cons)

            {

                //遍歷窗體中的控制元件,重新設定控制元件的值

                foreach (Control con in cons.Controls)

                {

                    string[] mytag = con.Tag.ToString().Split(new char[] { ':' });//獲取控制元件的Tag屬性值,並分割後儲存字串陣列

                    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);

                    }

                }

            }

    C#窗體設計:[9]自動調整控制元件大小

  6. 對窗體新增Resize()函式

    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();//窗體標題欄文字

            }

    C#窗體設計:[9]自動調整控制元件大小

  7. 程式執行如下:

    C#窗體設計:[9]自動調整控制元件大小步驟閱讀

    C#窗體設計:[9]自動調整控制元件大小