C 當窗體大小改變時,窗體中的控制項大小也隨之改變

2022-01-17 22:28:56 字數 3321 閱讀 9096

第一種:推薦

在窗體中加上如下**即可實現,但窗體點選放大按鈕時卻不能改變控制項大小。

private

size beforeresizesize

=size.empty;

protected

override

void

onresizebegin(eventargs e)

protected

override

void

onresizeend(eventargs e)

}第二種:效果很差

在載入事件中寫 autoscale(this);

//設定視窗控制項隨視窗大小改變而改變

public

newvoid

autoscale(form frm)

public

void

frm_sizechanged(

object

sender, eventargs e) if

(control

isbutton)

else}}

第三種:

using

system;

using

system.collections.generic;

using

system.componentmodel;

using

system.data;

using

system.drawing;

using

system.text;

using

system.windows.forms;

using

system.collections;

namespace

public

partial

class

form1 : form

private

void

form1_load(

object

sender, eventargs e)

public

void

getallcrllocation(control crlcontainer)

//獲得並儲存窗體中各控制項的初始位置

} public

void

getallcrlsize(control crlcontainer)

//獲得並儲存窗體中各控制項的初始尺寸 }

public

void

getinitialformsize()

//獲得並儲存窗體的初始尺寸

private

void

form1_sizechanged(

object

sender, eventargs e)

this

.autoscroll

=true;}

else

//否則,重新設定窗體中所有控制項的大小(窗體內所有控制項的大小隨窗體大小的變化而變化)

} public

void

resetallcrlstate(control crlcontainer)

//重新設定窗體中各控制項的狀態(在與原狀態的對比中計算而來)

point point

=new

point();

point.x =(

int)((

int)crllocationx[wcounter]

*formsizechangedx);

point.y =(

int)((

int)crllocationy[wcounter]

*formsizechangedy);

kcrl.width =(

int)((

int)crlsizewidth[wcounter]

*formsizechangedx);

kcrl.height =(

int)((

int)crlsizeheight[wcounter]

*formsizechangedy);

kcrl.bounds

=new

rectangle(point, kcrl.size);

wcounter

++; }}

}

}第四種:

private

float

x;private

float

y;private

void

settag(control cons)

}private

void setcontrols(float newx, float

newy, control cons)

);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]) *math.min(newx,newy);

con .font =new

font (con.font .name ,currentsize,con.font .style ,con.font .unit );

if(con.controls .count >0

) }}

void form1_resize(object

sender, eventargs e)

在form_load裡面新增:

this.resize += new

eventhandler(form1_resize);

x = this.width;

y = this.height;

settag (

this

);

form1_resize(

newobject(),new eventargs());//

x,y可在例項化時賦值,最後這句是新加的,在mdi時有用

窗體控制項隨窗體大小改變 包括字型大小

是一篇vb編寫的,我只是把它翻譯成c 的.其實anchor和dock屬性也可以實現,但好象只對容器效果理想,而且字型大小也沒有變化.最近論壇上有好多這樣的貼子,具體實現 如下 private void settag control cons private void setcontrols floa...

C 實現窗體控制項隨窗體大小改變 包括字型大小

private float x private float y private void settag control cons private void setcontrols float newx,float newy,control cons float a convert.tosingle ...

C 實現窗體控制項隨窗體大小改變 包括字型大小

private float x private float y private void settag control cons foreach control con in cons.controls private void setcontrols float newx,float newy,c...