c# 窗體放大窗體中的控制元件也隨著窗體放大
阿新 • • 發佈:2019-01-23
因為最近要寫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.根據窗體的大小控制控制元件的大小
4.在窗體的裝入事件中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); } } }
x=this.Width;
y=this.Height;
setTag(this);
5.在窗體的Resize事件中
float newx=(this.Width) /x;
float newy=(this.Height) /y;
setControls(newx,newy,this);
堅持寫完這些後,執行程式,放大窗體,你就可以看到控制元件隨著窗體變大了
在文章的結尾再次感謝這位博主