注册 登录
编程论坛 VB6论坛

窗体宽度怎么使用?

txxb 发布于 2014-11-10 14:20, 1017 次点击
form1.Width=12510 '随意就画了这么大
form1.windowstate=2

Command1.Left = Form1.Width / 2 - Command1.Width / 2

Command1左右不居中,窗体宽度用的是12510.怎样才能居中?

奇怪的是同样条件Command1上下怎么是居中的?
5 回复
#2
xzlxzlxzl2014-11-11 09:22
放在form_resize事件里不管怎样都居中了
Private Sub Form_Resize()
Command1.Left = (Me.ScaleWidth - Command1.Width) * 0.5
Command1.Top = (Me.ScaleHeight - Command1.Height) * 0.5
End Sub
#3
zhengang10262014-11-11 14:52
回复 楼主 txxb
你前两行语句本身就冲突,第一句刚说form1.Width=12510 ,第二句就窗体最大化了,而 Form_Load()事件中的Form1.Width 是原始窗体宽,而Command1.Left = Form1.Width / 2 - Command1.Width / 2得出的也是基于原始窗体宽计算的,所以当窗体最大化后肯定不居中了,但你将窗体恢复为正常窗口试试看,它还是居中的,要想不管什么情况下都是居中的,就需采用二楼xzlxzlxzl版主的方法。
#4
txxb2014-11-11 18:57
不冲突吧,电脑是死的,
第一句Width=12510没问题,第二句最大化就最大化也没问题

问题是先最大化的,Form_Load()中的Form1.Width为什么还用原始宽度?
#5
xzlxzlxzl2014-11-11 22:03
这种情况要分析窗体事件的执行顺序。运行时首先执行load事件,其次再执行resize事件,之所以会引起resize事件,可以理解为窗体隐含执行了一句me.show语句,而load事件改变WindowState属性值,由于此时窗体并没有实际显示出来,所以不能引起任何事件,也就是不会实际改写窗体大小属性,所以你的置中的代码看不到任何效果,只有执行了form.show方法后,窗体实际显示了,改变WindowState才会影响窗体大小变化。你把代码做如下改变就可以得到你想要的。

form1.Width=12510 '随意就画了这么大
form1.windowstate=2
form1.show    '有这一句,上一句的效果才能显现,下一句就能让按钮置中了
Command1.Left = Form1.Width / 2 - Command1.Width / 2

#6
txxb2014-11-12 09:07
谢谢版主。
1