| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1017 人关注过本帖
标题:窗体宽度怎么使用?
只看楼主 加入收藏
txxb
Rank: 2
等 级:论坛游民
帖 子:104
专家分:59
注 册:2014-10-8
结帖率:96%
收藏
已结贴  问题点数:20 回复次数:5 
窗体宽度怎么使用?
form1.Width=12510 '随意就画了这么大
form1.windowstate=2

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

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

奇怪的是同样条件Command1上下怎么是居中的?
搜索更多相关主题的帖子: 左右 
2014-11-10 14:20
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
收藏
得分:0 
放在form_resize事件里不管怎样都居中了
Private Sub Form_Resize()
Command1.Left = (Me.ScaleWidth - Command1.Width) * 0.5
Command1.Top = (Me.ScaleHeight - Command1.Height) * 0.5
End Sub
2014-11-11 09:22
zhengang1026
Rank: 6Rank: 6
等 级:侠之大者
威 望:1
帖 子:136
专家分:409
注 册:2013-2-6
收藏
得分:0 
回复 楼主 txxb
你前两行语句本身就冲突,第一句刚说form1.Width=12510 ,第二句就窗体最大化了,而 Form_Load()事件中的Form1.Width 是原始窗体宽,而Command1.Left = Form1.Width / 2 - Command1.Width / 2得出的也是基于原始窗体宽计算的,所以当窗体最大化后肯定不居中了,但你将窗体恢复为正常窗口试试看,它还是居中的,要想不管什么情况下都是居中的,就需采用二楼xzlxzlxzl版主的方法。
2014-11-11 14:52
txxb
Rank: 2
等 级:论坛游民
帖 子:104
专家分:59
注 册:2014-10-8
收藏
得分:0 
不冲突吧,电脑是死的,
第一句Width=12510没问题,第二句最大化就最大化也没问题

问题是先最大化的,Form_Load()中的Form1.Width为什么还用原始宽度?
2014-11-11 18:57
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
收藏
得分:20 
这种情况要分析窗体事件的执行顺序。运行时首先执行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

2014-11-11 22:03
txxb
Rank: 2
等 级:论坛游民
帖 子:104
专家分:59
注 册:2014-10-8
收藏
得分:0 
谢谢版主。
2014-11-12 09:07
快速回复:窗体宽度怎么使用?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.045083 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved