2009-09-28 15 views
6

私はVb.Netのイベントとハンドラに慣れています。 誰でもC#でイベントハンドラを作成し、イベントを発生させる方法を教えてくれますか?addHandlerを使用してイベントを発生させる方法

+0

。 – tster

+2

彼はちょうどイベントハンドラを追加し、C#でイベントを発生させる方法を知りたいと思うし、彼はすでにVBでそれを行う方法を知っています。 –

+0

Mitesh、あなたの質問をかなり編集しました。私はちょうど英語を上げようとしていました。あなたが尋ねていたことを誤解してしまった場合は、ごめんなさい。元に戻してください。 – MarkJ

答えて

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

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

C#2では、最大あなたはこのようなイベントハンドラを追加しますsomeMethodGroupの署名がyourObject.Eventのデリゲート署名と一致

yourObject.Event += someMethodGroup; 

を。

yourObject.Event += new EventHandler(someMethodGroup); 

となりまし方法グループ、イベント、およびEventHandlerの署名が一致している必要があります:あなたが明示的にこのようなイベントハンドラを作成する必要がC#1では

10

C#のみ、またはVB.Netのみを知っている開発者は、これがVB.NETとC#の大きな違いの1つであることを知らないかもしれません。

私はshamelesssly copy VBイベントのこのすばらしい説明です:VBはイベントを添付するための宣言的な構文を使用します。 Handles句は、イベントを処理するコードに表示されます。必要に応じて、複数のメソッドが同じイベントを処理でき、複数のイベントを同じメソッドで処理できます。 Handles句の使用は、WithEvents修飾子がボタンなどの基になる変数の宣言に現れることに依存しています。 AddHandlerキーワードを使用してプロパティハンドラをアタッチし、RemoveHandlerでそれらを削除することもできます。 C#の例

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 

のためには、宣言構文を使用することはできません。 VB.Net AddHandlerのように動作するようにオーバーロードされている+ =を使用します。 tster's answerから恥知らずに盗まれた例を次に示します。

関連する問題