根據視窗的大小自動調整控制元件大小
工具/原料
Microsoft Visual Studio 2015
方法/步驟
新建一個C#應用程式,應用程式命名為Change
窗體設計:[9]自動調整控制元件大小#
窗體介面設計如下
窗體設計:[9]自動調整控制元件大小#
雙擊窗體新增Load()函式,函式中新增一下程式碼:
private void Form1_Load(object sender, EventArgs e)
{
this.Resize += new EventHandler(Form1_Resize);//窗體調整大小時引發事件
X = this.Width;//獲取窗體的寬度
Y = this.Height;//獲取窗體的高度
setTag(this);//呼叫方法
}
窗體設計:[9]自動調整控制元件大小#
獲取控制元件的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);
}
}
窗體設計:[9]自動調整控制元件大小#
根據窗體大小調整控制元件大小,新增一下程式碼:
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);
}
}
}
窗體設計:[9]自動調整控制元件大小#
對窗體新增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();//窗體標題欄文字
}
窗體設計:[9]自動調整控制元件大小#
程式執行如下:
窗體設計:[9]自動調整控制元件大小#
注意事項
注意函式的新增