相信很多博友在開發初次接觸學習c# winform時,當窗體大小變化時,窗體內的控制項並沒有隨著窗體的變化而變化,最近因為乙個專案工程的原因,也需要解決這個問題。通過查閱和學習,這個問題得到了解決,或許不是很好的處理方式,但是也值得借鑑。。。
下面我將建立乙個demo來大概解釋下這個方法的實現:(注:我使用的是的vs2010)
step1:開啟vs2010,建立乙個c#winform專案(注:這裡我將其命名為test1,博友們可以自由發揮哈!)
建立之後拖拽控制項達到如圖所示效果:
step2:右擊,檢視**,在**介面新增
1.定義全域性變數
private2.功能函式settagfloat x;//
當前窗體的寬度
private
float y;//
當前窗體的高度
///3.功能函式setcontrols///將控制項的寬,高,左邊距,頂邊距和字型大小暫存到tag屬性中
/// ///
遞迴控制項中的控制項
private
void
settag(control cons)
}
//4.在窗體的load事件中新增根據窗體大小調整控制項大小
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
) }}
private5.在窗體的resize事件中新增void form1_load(object
sender, eventargs e)
privatestep3: 點選啟動除錯,至此該功能已經實現,是不是發現控制項都可以等比例變化了!(over)void form1_resize(object
sender, eventargs e)
總結:當然這只是乙個小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...