2011-08-15 48 views
2

我可以從另一個類調用一個類中包含的共享事件嗎?從另一個班級提高.net事件?

例如:

logonclass.vb:處理登錄邏輯和驗證針對數據庫

logonmanager.vb:保持當前用戶參考和一些登錄和超時事件

Logon.vb:一個形式與一個提交按鈕。

我願做這樣的事情,但我不能讓編譯器與它

If VerifyEntries() Then 
     Try 
      privLvl = LoginClass.AttemptLogin(txtUserName.Text, txtPassword.Text) 
     Catch 
     End Try 
     If privLvl > 0 Then 
      'RaiseEvent LoginClass.UserLoggedIn() 
      'RaiseEvent LoginManager.UIdisplaychange(privLvl) 
      Me.Close() 
     End If 

    End If 

同意如果不是接線的東西放在一起,讓我知道,這樣我可以學習的正確方法結構不同。在我的計劃中,似乎我從logonclass向loginmanager類提高了許多額外的重複事件。然後,登錄管理員不得不再次爲主表單提升以查看更改事件。這讓我想到,如果我公開分享這些事件,並且可以從任何地方提高它們,那麼它將減少我在代碼中需要的事件數量以及它們在運行時飛行的數量。

回答

8

在C#中,「event」關鍵字生成一個私人委託成員對象。所以它只能被定義的類訪問。但是你可以公開一個將觸發事件的公共方法,並且這個方法可以從外部訪問。 我覺得在VB中是一樣的。

+0

好的。我現在明白了。如果我想讓其他人看到它,我必須公開事件。 – TWood

+0

好吧,咖啡還沒有踢。我的答案和你的完全一樣。 :-) –

3

我會創建一個引發事件的Friend方法。調用該方法,或者外部引發事件。

Class LoginClass 

    Public Shared Event UserLoggedIn As EventHandler 

    Friend Shared Sub OnUserLoggedIn(e As EventArgs) 
     RaiseEvent UserLoggedIn(Me, e) 
    End Sub 
End Class 
相關問題