新建乙個c#應用程式,應用程式命名為change
窗體介面設計如下
雙擊窗體新增load()函式,函式中新增一下**:
private void form1_load(object sender, eventargs e)
this.resize += new eventhandler(form1_resize);//窗體調整大小時引發事件
x = this.width;//獲取窗體的寬度
y = this.height;//獲取窗體的高度
settag(this);//呼叫方法
獲取控制項的width、height、left、top、字型大小的值,新增一下**:
private void settag(control cons)
//遍歷窗體中的控制項
根據窗體大小調整控制項大小,新增一下**:
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;//字型大小
對窗體新增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();//窗體標題欄文字
程式執行如下:
窗體自動調整大小
關於窗體自動調整大小,網上資料一搜一大片,大部分雷同,我使用後發現都有些小毛病就是多托拉幾次後,再拉回原來大小,畫面顯示效果和開始的時候有點不一樣。所以針對網上的 做了些修改,呵呵,不過變數名什麼的沒改。private objoldwidth as long private objoldheight...
C winfrom 自動調整控制項大小
最近公司要重構乙個專案,把c 寫的桌面應用改為winfrom,而此時我遇到乙個問題就是winfrom控制項的自動放大和縮小,就是根據視窗的大小來改變winfrom視窗和容器內的控制項的大小。在網上找了很多得到的效果並不如意,大多數都在介紹控制項中的anchor屬性,但是這個屬性會受各方面的影響,比如...
2020 12 03 控制項自動適應窗體大小 c
控制項自動適應窗體大小 c 1.初始時,儲存所有的控制項的位置大小,用name來儲存,2.在窗體resize的時候就遍歷所有的控制項,按照窗體和原來的比例來 using system using system.collections.generic using system.componentmod...