在Vb中如text和label控件是没有垂直居中功能的。
但是可以变通就是给文字加空行。
下面的是从百度贴吧上面引用来的:
但是他并没有说明要将text的mutiline属性设置为true,否则是不行的。
'加一个Text1一个Command1
DimaaAsString,iAsInteger,jjAsInteger,maxlineAsInteger,LineCntAsLong
PrivateDeclareFunctionSendMessageLib"user32"Alias"SendMessageA"(ByValhwndAsLong,ByValwMsgAsLong,ByValwParamAsLong,lParamAsAny)AsLong
ConstEM_GETLINECOUNT=&HBA
PrivateSubForm_Load()
'窗体与Command1居中
Me.Move(Screen.Width-Me.Width)\2,(Screen.Height-Me.Height)\2
Command1.Move(Me.Width-Command1.Width)\2,Text1.Height+Text1.Top+200
Command1.Caption="居中显示"
Text1.Alignment=2'TextBox水平居中显示
aa="Attn:楼主"
aa=aa&Chr(13)&Chr(10)
aa=aa&"呵呵你的问题都好奇怪,但也让我学了不少!"
aa=aa&Chr(13)&Chr(10)
aa=aa&"我也想不出其它的好方法"
aa=aa&Chr(13)&Chr(10)
aa=aa&"你认为这样行吗?"
Text1.Text=aa
EndSub
PrivateSubCommand1_Click()
LineCnt=TextBoxLineCnt(Text1)
'每增加一行加上180,当然是以默认的字体大小而言
maxline=Text1.Height\180'计算textbox能装下几行
jj=(maxline-LineCnt)\2'垂直居中,(textbox总行数-Text1的总行数)整除2
Fori=1Tojj'装上几行空白
Text1.Text=Chr(13)&Chr(10)&Text1.Text
Nexti
MsgBox"总共有"&CStr(LineCnt)&"行文字,看看垂直居中了吗?"
EndSub
PublicFunctionTextBoxLineCnt(ctlAsTextBox)AsLong'计算总行数的函数
TextBoxLineCnt=SendMessage(ctl.hwnd,EM_GETLINECOUNT,0,0)
EndFunction