簡體   English   中英

重載VB.NET事件?

[英]Overload VB.NET event?

在我的VB.NET類中,我有一些如下代碼:

Public Class barClass

Private Function foo(data as string)
    msgbox("Data is a string: " & data)
End Function

Private Function foo(data as integer)
    msgbox("Data is an integer: " & data
End Function

End Class

顯然,這可以讓您將字符串或整數傳遞給foo

我認為我可以為事件做同樣的事情,所以我嘗試:

Public Event FooRaised(data as string)
Public Event FooRaised(data as integer)

我以為我可以通過傳遞從foo獲得的任何數據來引發事件,但是我得到一個錯誤,說我不能這樣做(那個FooRaised已經被聲明了)。

我該如何實現?

使用Object參數聲明一個事件,然后檢查類型以對其進行處理:

Public Class Form1

  Public Event Foo(o As Object)

  Sub FooHandler(o As Object) Handles Me.Foo
    If o.GetType Is GetType(Integer) Then
      Dim i As Integer = DirectCast(o, Integer)
      i += 1 'add one to the integer value'
      MsgBox(i.ToString)
    ElseIf o.GetType Is GetType(String) Then
      Dim s As String = DirectCast(o, String)
      s &= "!!" 'append exclamation marks'
      MsgBox(s)
    End If
  End Sub

  Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    RaiseEvent Foo(21)
    RaiseEvent Foo("a string value")
  End Sub
End Class

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM