2009-08-19 11 views
72

送信者とeventArgsの意味/参照は何ですか?どうすればそれらを利用できますか?.NETイベント - オブジェクト送信者とEventArgsとは何ですか?

シナリオ:

私は削除機能を持つカスタムコントロールを構築しようとしている、と私は同じカスタムコントロールの多くが含まれているページ上でクリックされたコントロールを削除できるようにしたいです。

+0

@rogerdeuceでは、この問題がASP.netのc#プロジェクトで発生したため、c#としてタグ付けされています。あなたの編集コメントに基づいてvbタグも追加しました。 – stringo0

答えて

77

送信者は、そのアクションが対象とするコントロールです(たとえば、OnClick、ボタンです)。

EventArgsは、このイベントの実装者が有用と考える引数です。 OnClickには何もいいことはありませんが、GridView 'SelectedIndexChanged'のようなイベントでは、新しいインデックスやその他の有用なデータが含まれます。

何クリスが言っていることは、あなたがこれを行うことができます:

protected void someButton_Click (object sender, EventArgs ea) 
{ 
    Button someButton = sender as Button; 
    if(someButton != null) 
    { 
     someButton.Text = "I was clicked!"; 
    } 
} 
+4

ありがとう! eventargsを拡張したり、それらについてのリンクを提供してもよろしいですか?たとえば、eventargsを通じて文字列値を渡すことはできますか?もしそうなら、どうですか? – stringo0

+5

「あなた」はイベントを送信するクラスです。したがって、通常は、 'EventArgs'を独自の 'MyControlsEventEventArgs'でサブクラス化し、渡す内容のプロパティを設定します。イベントを送信するコントロールを記述しているときだけ、ここに物事を入れます。 *ボタン*に文字列値を入れたい場合は、通常、 'CommandArgument'フィールドを使用します。このフィールドは、送信者を 'Button'にキャストすることでアクセスできます(私の投稿のように)。 –

7

手動でカスタムコントロールの種類に送信者をキャストし、その後、削除したりなど例えば、このような何か無効にするには、それを使用します。

private void myCustomControl_Click(object sender, EventArgs e) 
{ 
    ((MyCustomControl)sender).DoWhatever(); 
} 

「送信者」はactionedたばかりのオブジェクトであります(例えば、クリックされた)。

イベントargsは、より複雑なコントロール、たとえばツリービューのためにサブクラス化されているため、クリックした場所など、イベントの詳細を知ることができます。

+0

これを少し拡張できますか?送信者/イベントターゲットを処理するにはどうすればよいですか?私はそれらを使用することに慣れていない。 – stringo0

+0

@ stringo0 senderは、イベントを発生させたオブジェクトです(慣習的に 'this'を渡してイベントデリゲートを呼び出します)。 EventArgsは、サブクラス化されていない場合、全く使用されていません**。したがって、SelectedIndexEventArgsパラメータまたはCancelEventArgsを持たない限り、何もできません。あなたがそれらを使用することに慣れていない場合は、単にそれを必要としませんが、あなたはメソッドの署名でそれらを必要とします。だからあなたは単にそれらを無視することができます。イベントを扱うラムダを書くと、これらの引数の名前を書く必要はありません。 –

19

senderは、イベントハンドラを発射したイベントを呼び出したオブジェクトを参照します。これは、同じイベントハンドラを使用するオブジェクトが多数ある場合に便利です。

EventArgsは、ダミーベースクラスのものです。それ自体では、多かれ少なかれ無駄ですが、それから派生すれば、イベントハンドラに渡す必要のあるデータを追加できます。

独自のイベントを実装する場合は、タイプとしてEventHandlerまたはEventHandler<T>を使用します。これにより、すべてのイベントに対してこれら2つのパラメータが正確に保持されることが保証されます(これは良いことです)。

5
  1. 「送信者が」何らかのアクションを持つオブジェクトが

  2. 「イベント」は、そのいくつかbehavoiurとアイデンティティがいくつかによって を行う を持つコントロールに関するいくつかの情報を持ついくつかの 制御で行うと呼ばれていますイベントが発生すると、 イベントが発生して生成します。 イベント内に保持します。 agrs