我發現在構造函數中引發的事件(直接在間接引發)不能在該類之外處理。爲了證明這是否是真正的問題,我寫了一個簡單的示例應用程序。VB.NET - 成員事件處理存在問題
類與事件:
Namespace Utils
Public Class A
Public Event Test()
Public Sub New()
CallTest()
End Sub
Public Sub MakeACall()
CallTest()
End Sub
Private Sub CallTest()
RaiseEvent Test()
End Sub
End Class
End Namespace
主要形式(處理事件正確):
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
m_A.MakeACall()
End Sub
Private Sub HandleTest() Handles m_A.Test
MsgBox("ta-dah!")
End Sub
Protected WithEvents m_A As New Utils.A()
End Class
主要形式(NOT處理正常事件):
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
m_A = New Utils.A()
End Sub
Private Sub HandleTest() Handles m_A.Test
MsgBox("ta-dah!")
End Sub
Protected WithEvents m_A As Utils.A
End Class
的原因這樣的行爲在寫完這些部分後變得非常明顯,但也許有一種方法可以省略它?
看起來不錯,謝謝。 – brovar 2009-10-26 14:32:43