winform窗體自適應

2021-09-29 10:54:39 字數 1728 閱讀 6263

實現步驟:

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 ...