C 控制項大小隨窗體大小等比例變化

2022-08-14 12:39:12 字數 1968 閱讀 3249

相信很多博友在開發初次接觸學習c# winform時,當窗體大小變化時,窗體內的控制項並沒有隨著窗體的變化而變化,最近因為乙個專案工程的原因,也需要解決這個問題。通過查閱和學習,這個問題得到了解決,或許不是很好的處理方式,但是也值得借鑑。。。

下面我將建立乙個demo來大概解釋下這個方法的實現:(注:我使用的是的vs2010)

step1:開啟vs2010,建立乙個c#winform專案(注:這裡我將其命名為test1,博友們可以自由發揮哈!)

建立之後拖拽控制項達到如圖所示效果:

step2:右擊,檢視**,在**介面新增

1.定義全域性變數

private

float x;//

當前窗體的寬度

private

float y;//

當前窗體的高度

2.功能函式settag

///

///將控制項的寬,高,左邊距,頂邊距和字型大小暫存到tag屬性中

/// ///

遞迴控制項中的控制項

private

void

settag(control cons)

}

3.功能函式setcontrols

//

根據窗體大小調整控制項大小

private

void setcontrols(float newx, float

newy, control cons)

);//

獲取控制項的tag屬性值,並分割後儲存字串陣列

float a = system.convert.tosingle(mytag[0]) * newx;//

根據窗體縮放比例確定控制項的值,寬度

con.width = (int)a;//

寬度 a = system.convert.tosingle(mytag[1]) * newy;//

高度 con.height = (int

)(a);

a = system.convert.tosingle(mytag[2]) * newx;//

左邊距離

con.left = (int

)(a);

a = system.convert.tosingle(mytag[3]) * newy;//

上邊緣距離

con.top = (int

)(a);

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

) }}

4.在窗體的load事件中新增

private

void form1_load(object

sender, eventargs e)

5.在窗體的resize事件中新增

private

void form1_resize(object

sender, eventargs e)

step3: 點選啟動除錯,至此該功能已經實現,是不是發現控制項都可以等比例變化了!(over)

總結:當然這只是乙個小demo,在實際應用中,還需要各位博友的腦洞開啟,才能更好的和各位的**契合,更好的應用到實際的專案中去。這也是我的第一篇博文,雖然篇幅不長,但是內容還算充實吧!希望以後各位多多支援~

C Winform 控制項大小隨窗體大小等比例縮放

在from1.cs中輸入如下 public form1 其中settag this 為控制項等比例縮放的方法 region 控制項大小隨窗體大小等比例縮放 private float x 定義當前窗體的寬度 private float y 定義當前窗體的高度 private void settag ...

控制項大小隨視窗等比例變化

第一步 oninitdialog裡儲存對話方塊及其所有子窗體的rect區域 在主視窗類中新增成員變數 clistm listrect成員變數 crect rect getwindowrect rect m listrect.addtail rect 對話方塊的區域 cwnd pwnd getwind...

Winform控制項隨視窗等比例縮放

在建立winform視窗時,常常控制項不能隨視窗正確比例縮放。執行窗體如下 最大化後窗體 縮小後窗體 實現方法如下 在form1視窗下新增乙個panel工具,在父容器中停靠 然後在panel容器中放置我們需要的工具 新建乙個 nform 窗體類,繼承預設窗體類 form 而原來的 form1 for...