捕捉事件(Events Catcher)


每一個物件都會有它與使用者互動的動作,如用被滑鼠點一下、被鍵盤按一下、被滑鼠游標滑過......等等等動作,這些動作就稱為事件。我們寫一段程式來捕捉表單(Form1)物件的事件,了解有哪些事件?何時發生?

双按Form1後進入程式碼編輯畫面如右圖

點選閣下感興趣的事件,並在該事件程序內將事件名稱顯示在Label物件上,為求生動,利用亂數Rnd()變更顯示位置。\

 

Public Class Form1

Private Sub Form1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Click

 Label1.Top = Rnd() * Me.Height

 Label1.Left = Rnd() * Me.Width

 Label1.Text = "Click事件發生了!"

End Sub

 

Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown

 Label1.Top = Rnd() * Me.Height

 Label1.Left = Rnd() * Me.Width

 Label1.Text = Chr(e.KeyCode) + "鍵a被Q按o了F!"

End Sub

 

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

 Label1.Top = Rnd() * Me.Height

 Label1.Left = Rnd() * Me.Width

 Label1.Text = "Load事件發生了"

End Sub

 

Private Sub Form1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown

 Label1.Top = Rnd() * Me.Height

 Label1.Left = Rnd() * Me.Width

 Label1.Text = "MouseDown事 件發生了"

End Sub

 

Private Sub Form1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove

 Label1.Top = Rnd() * Me.Height

 Label1.Left = Rnd() * Me.Width

 Label1.Text = "MouseMove事 件發生了"

End Sub

 

Private Sub Form1_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize

 Label1.Top = Rnd() * Me.Height

 Label1.Left = Rnd() * Me.Width

 Label1.Text = "Resize事件發生了"

End Sub

 

Private Sub Form1_ResizeEnd(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.ResizeEnd

 Label1.Top = Rnd() * Me.Height

 Label1.Left = Rnd() * Me.Width

 Label1.Text = "ResizeEnd事 件發生了"

End Sub

End Class


 

<試看看>

 

把所有的Label1.Text 改成Debug.Print, 在即時運算視窗中觀看

 


 

用變數來串接事件

 

Public Class Form1

 

Dim strEvent As String     '在這宣告一個字串變數儲存發生的事件訊息

Private Sub Form1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Click

strEvent = strEvent & "Click事件發生了" & vbNewLine

Label1.Text = strEvent

End Sub

 

Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown

strEvent = strEvent & Chr(e.KeyCode) + "鍵被按了" & vbNewLine

TextBox1.Text = strEvent

End Sub

 

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

strEvent = strEvent + "Load事件發生了" & vbNewLine

Label1.Text = strEvent

End Sub