VB編程之一

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事件密切相關。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章