VB中用Print方法,可以在容器上输出内容,请看以下一段代码(command1为按钮控件)
Private Sub Form_Load()
print "VB Print Test"
END Sub
Private Sub Command1_Click()
Print "Command1 Print"
End Sub
然后运行程序,您将会发现窗体上并没有显示出VB Print Test,而当单击Command1按钮时,
将会在窗体上打印出"Command1 Print",而并不是在窗体左上角。
为什么窗体启动后没有在窗体上打印出"VB Print Test"而单击按钮时就会打印出内容呢?
而且打印在第二行,而不是在最左上角呢?
这就与窗体的创建加载过程有关了。
窗体事件事件的执行有先后顺序,为Form_Initialize,Form_Load,Form_Active,Form_GotFocus,
Form_Paint.....
下面简单地验证一下这些顺序。
Dim sTemp As String
Private Sub Command1_Click()
MsgBox sTemp
End Sub
Private Sub Form_Activate()
sTemp = sTemp & vbCrLf & "Active 事件发生"
End Sub
Private Sub Form_GotFocus()
sTemp = sTemp & vbCrLf & "GotFocus 事件发生"
End Sub
Private Sub Form_Initialize()
sTemp = sTemp & vbCrLf & "Initialize 事件发生"
End Sub
Private Sub Form_Load()
sTemp = sTemp & vbCrLf & "Load 事件发生"
End Sub
Private Sub Form_Paint()
sTemp = sTemp & vbCrLf & "Paint 事件发生"
End Sub
Private Sub Form_Resize()
sTemp = sTemp & vbCrLf & "Resize 事件发生"
End Sub
单击Command1后将出现提示框,显示各个事件先后发生的次序。这样就不难明白为什么程序运行
后不能打印VBPrint Test了,因为把print方法放在Load过程中,而Paint事件在Load事件后发生,
窗体重控,所以不能看见VB Print Test了。只要是在Paint事件前用print方法,都不能显示。不
过,只要将Form的AutoRedraw设置为True,那么将会发现也能正确打印出VB Print Test;
AutoRedraw属性与Paint事件密切相关。