簡體   English   中英

如何引發帶有參數的事件?

[英]How Do You Raise an Event With a Parameter?

在使用VB.Net一段時間之后,我最近開始使用C#。

在VB.Net中,您可以使用傳入的參數引發事件。例如

Event TileMoved(ThisTile As Tile)

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    RaiseEvent TileMoved(Me)
End Sub

請有人解釋如何在C#中執行此操作嗎?

任何幫助將非常感激。

vb-> c#轉換可得出此結果。

public event TileMovedEventHandler TileMoved;
public delegate void TileMovedEventHandler(Tile ThisTile);

private void Button1_Click(System.Object sender, System.EventArgs e)
{
    if (TileMoved != null) {
        TileMoved(this);
    }
}

您可以使用事件數據類。 看這里:

http://msdn.microsoft.com/zh-CN/library/edzehd2t(v=vs.110).aspx

您可以將事件視為在不可預測的時間進行的方法調用。 該程序的其余部分並不真正知道何時會發生什么事情,因此“委派”了一些方法來響應發生的事件。 我在這里表達的參數是Microsoft標准,但是您可以使用任何喜歡的參數。

但是,接收事件的方法必須具有與引發事件完全相同的參數。

這是在VB中進行事件的方式。 在事件聲明中:

Public Event OnLoad(e As System.EventArgs, sender as Object)

在事件調用中: RaiseEvent OnLoad(New EventArgs(), Me)您可以在此處使用任何類型的參數。

使方法響應事件

Public Sub HelloWorld(e as System.EventArgs, sender as Object) Handles OtherObject.OnLoad

End Sub

要么:

AddHandler OtherObject.OnLoad, AddressOf MethodToHandleTheEvent

希望這可以幫助。 如果您還有其他問題,請發表評論。

暫無
暫無

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

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