簡體   English   中英

如何使用addHandler引發事件

[英]How to raise event using addHandler

我對Vb.Net事件和處理程序很滿意。 任何人都可以幫助我如何在c#中創建事件處理程序,並引發事件。

只知道C#或只知道VB.Net的開發人員可能不知道這是VB.NET和C#之間的較大差異之一。

我將無恥地復制 VB事件的這個很好的解釋:VB使用聲明性語法來附加事件。 Handles子句出現在將處理事件的代碼上。 適當時,多個方法可以處理相同的事件,並且可以通過相同的方法處理多個事件。 Handles子句的使用依賴於出現在基礎變量聲明(例如按鈕)上的WithEvents修飾符。 您還可以使用AddHandler關鍵字附加屬性處理程序,並使用RemoveHandler刪除它們。 例如

Friend WithEvents TextBox1 As System.Windows.Forms.TextBox   

Private Sub TextBox1_Leave(ByVal sender As System.Object, _
  ByVal e As System.EventArgs) Handles TextBox1.Leave
  'Do Stuff '
End Sub

在C#中,您無法使用聲明性語法。 你使用重載的+ =來充當VB.Net AddHandler。 以下是tster答案中無恥地竊取的一個例子:

public MyClass()
{
    InitializeComponent();
    textBox1.Leave += new EventHandler(testBox1_Leave);
}

void testBox1_Leave(object sender, EventArgs e)
{
  //Do Stuff
}

在C#2及更高版本中,您可以添加如下事件處理程序:

yourObject.Event += someMethodGroup;

someMethodGroup的簽名與yourObject.Event的委托簽名匹配。

在C#1中,您需要顯式創建一個這樣的事件處理程序:

yourObject.Event += new EventHandler(someMethodGroup);

現在方法組,事件和EventHandler的簽名必須匹配。

    public MyClass()
    {
        InitializeComponent();
        textBox1.LostFocus += new EventHandler(testBox1_LostFocus);
    }

    void testBox1_LostFocus(object sender, EventArgs e)
    {
        // do stuff
    }

暫無
暫無

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

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