2011-07-24 2 views
1

こんにちは私はボタンを持っていて、それに "Click"イベントがあることを知っています。 どうすればこのイベントを「クリック」とデリゲートを追加できますか?おかげで自分のフォーム(Webフォーム、勝つフォーム)に関連する.csファイルで文字列からイベントハンドラを追加する

+5

私はそれを得ることはありません...何? – BoltClock

答えて

2

ヘルパーメソッドを定義し

AddEventHandler(yourButton, "Click", yourHandlerDelegate); 
0

は::

// This will handle the event for the button named bntSubmit 
protected void btnSubmit_Click(object sender, EventArgs e) 
{ 
    // Code to handle click event 
} 

一般的に言えば、ほとんどの人(すべてではない)イベントハンドラの<controlid>_<event>命名規則を使用します。 btnSubmitのidを持つボタンのOnClickイベントのbtnSumbit_Clickと同じです。

ASP.NET用

(もスタブを生成しますデザイナでフォームをダブルクリック)、あなたはマークアップ(.aspxのファイル)にボタンのOnClick属性を設定する必要があります:

<asp:Button ID="btnSubmit" OnClick="btnSubmit_Click" Text="Submit" runat="server" /> 

Winフォームでは、デザイナのボタンをダブルクリックすることで、メソッドスタブを簡単に生成できます。

MVCやWPFではあまり働いていませんが、プロセスは似ていると思いますが、メソッドのシグネチャは同じです。それを

public static void AddEventHandler(object obj, string eventName, Delegate handler) 
{ 
    if(obj == null) throw new ArgumentNullException("obj"); 
    if(eventName == null) throw new ArgumentNullException("eventName"); 
    if(handler == null) throw new ArgumentNullException("handler"); 

    var type = obj.GetType(); 
    var evt = type.GetEvent(eventName); 
    if(evt == null) throw new ArgumentException(
     string.Format("Event '{0}' is not defined by type '{1}'", eventName, type.Name)); 

    evt.AddEventHandler(obj, handler); 
} 

と使用::

関連する問題