第一種:推薦
在窗體中加上如下**即可實現,但窗體點選放大按鈕時卻不能改變控制項大小。
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
++; }}
}
}第四種:
privatefloat
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...