C 窗體設計 自動調整控制項大小

2021-08-28 13:49:48 字數 2330 閱讀 2034

新建乙個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...