为什么一使用screen.width,编译器就会死掉?

ningweidong 2011-07-16 10:07:18
Option Explicit

Private Sub Form_Load()
Me.Left = 10000 '一旦这里改成screen.width,整个编译器都会死

End Sub

Private Sub Form_Paint()
While Me.Left > 0
DoEvents
Me.Left = Me.Left - 1
Wend
End Sub
这段代码也很简单,我奇怪的是,如果Me.Left = 10000如果是给它赋值,就没问题,一旦改成screen.width,编译器都会死掉,只有重启电脑。
大家可以把这段代码复制下来试一下,我一个朋友试,他的机子也死了
...全文
196 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
hpygzhx520 2011-07-22
  • 打赏
  • 举报
回复
编译器是编译代码的吧,你编译为EXE的时候死了?
韩小婼 2011-07-22
  • 打赏
  • 举报
回复
韩小婼 2011-07-22
  • 打赏
  • 举报
回复
出现了窗口从右向左移动
韩小婼 2011-07-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 bestbadgod 的回复:]
Me.Left = screen.width '一旦这里改成screen.width,整个编译器都会死
这样的话,整个窗体就会再屏幕的右边,由于不在当前屏幕中显示,所以无法触发Form_Paint事件,所以 应该是不动的才对。不会导致编译器出问题。
[/Quote]试了下,出现了窗口从右向左移动,怎么叫编译器死了?
贝隆 2011-07-22
  • 打赏
  • 举报
回复
不是死了,而是没有触发Paint事件,你不能把窗口隐藏,如果隐藏了,就不能触发Paint

你可以这样试一试:

Option Explicit
Private Sub Form_Load()
Me.Left = Screen.Width - Me.Width '一旦这里改成screen.width,整个编译器都会死
End Sub

Private Sub Form_Paint()
While Me.Left > 0
DoEvents
Me.Left = Me.Left - 1
Wend
End Sub



这个代码正好没有遮挡住窗体,就没有问题。
倒大霉的上帝 2011-07-22
  • 打赏
  • 举报
回复
Me.Left = screen.width '一旦这里改成screen.width,整个编译器都会死
这样的话,整个窗体就会再屏幕的右边,由于不在当前屏幕中显示,所以无法触发Form_Paint事件,所以 应该是不动的才对。不会导致编译器出问题。

韩小婼 2011-07-22
  • 打赏
  • 举报
回复
[Quote=引用楼主 ningweidong 的回复:]
Option Explicit

Private Sub Form_Load()
Me.Left = 10000 '一旦这里改成screen.width,整个编译器都会死

End Sub

Private Sub Form_Paint()
While Me.Left > 0
DoEvents
Me.Left = Me.Left - 1
Wend
……
[/Quote]我没编译器死,但出现Screen.Width 是只读属性,它会提示不能给只读属性赋值。拜托这个设置是在属性框内赋值,你这么弄,它是读属性框内的还是读FORM_load里的。这难道还要搞个优先级

7,785

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧