實現步驟:
1.在窗體中放乙個容器(例如:panel),並且將容器的dock屬性設定為fill。窗體中其他控制項都放在這個容器中。
2.建立乙個窗體類,該類繼承於原始窗體類,並在新建的這個窗體類中新增如下**,以後建立的窗體都繼承於新建的這個窗體類:
#region
控制項縮放
double
formwidth;
//窗體原始寬度
double
formheight;
//窗體原始高度
double
scalex;
//水平縮放比例
double
scaley;
//垂直縮放比例
dictionary<
string
, string
> controlinfo =
newdictionary<
string
, string
>();
//控制項中心left,top,控制項width,控制項height,控制項字型size
////// 獲取所有原始資料
///
protected
void
getallinitinfo(control crlcontainer)
foreach
(control item
incrlcontainer.controls)
} private
void
controlschangeinit(control crlcontainer)
private
void
controlschange(control crlcontainer)
double
itemwidth = pos[
2 ] * scalex;
double
itemheight = pos[
3 ] * scaley;
item.left = convert.toint32(pos[
0 ] * scalex - itemwidth /
2 );
item.top = convert.toint32(pos[
1 ] * scaley - itemheight /
2 );
item.width = convert.toint32(itemwidth);
item.height = convert.toint32(itemheight);
item.font =
newfont(item.font.name,
float
.parse((pos[
4 ] * math.min(scalex, scaley)).tostring())); }
} }
#endregion
3.在新建的窗體類中重寫onsizechanged事件,並呼叫controlschangeinit和controlschange方法,**如下:
protected
override
void
onsizechanged(eventargs e)
}
4.在窗體的建構函式中呼叫getallinitinfo方法,**如下:
getallinitinfo(
this
.controls[
0 ]);
WinForm窗體控制項自適應大小
第一步 新建結構體,用於儲存窗體屬性 第二步 新建集合用於儲存對應控制項結構的屬性 第三步 將控制項的屬性新增到集合中 第四步 計算出放大和縮小的比例 第五步 輸出實際的控制項大小 參考 using system using system.collections.generic using syst...
Winform窗體控制項自適應大小
自己寫的winform窗體自適應大小 比較獨立,很適合貼來貼去不會對原有程式造成影響,可以直接繼承此類或者把 複製到自己的 裡面直接使用 借鑑了網上的一些資料,最後採用重寫wndproc方法,這樣可以兼顧窗體拖拽調整窗體大小和最大化 最小化方法,而且 比較簡練,侵入性較小 using system ...
C 自適應窗體大小
system.drawing.rectangle rect screen.getworkingarea this 獲取工作電腦的screen的矩形 int width rect.width int height rect.height this.size new size width,height ...