2

フレームワーク バージョン 2.0 (4.0 は使用できません) を使用していますが、動的に作成されたボタンにイベント ハンドラーを割り当てる次の方法は機能しません。

deleteButton.Click += (object sender, EventArgs e) => DeleteAnswer(sender, e, toDelete);

エラー: 'ラムダ式' は使用できません。これは ISO の一部ではありません - 2 C#

それで、いくつかの検索の後、私はこの方法を試しました:

deleteButton.Click += new System.EventHandler(DeleteAnswer(sender, e, toDelete));

エラー: メソッド名が必要です

次に、この方法:

deleteButton.Click += DeleteAnswer(sender, e, toDelete);

エラー: タイプ 'void' を 'System.EventHandler' に暗黙的に変換できません


これは私のコードの簡単な部分です:

public partial class Question : System.Web.UI.Page
{

     protected void Page_Load(object sender, EventArgs e)
     {
            //Some Codes Here
           if(//Some Condition)
           {
                Button deleteButton = new Button();
                deleteButton.Click = //Event Handler Here
           }
     }

     protected void DeleteAnswer(object sender, EventArgs e, String answer)
     {
     }

}

イベントハンドラを割り当て、引数を渡す正しい方法は何ですか?

アップデート

ここに画像の説明を入力

4

2 に答える 2

4

senderまたはEventArgsパラメータが必要ない場合はdelegate、メソッドを呼び出す を作成できます。

deleteButton.Click += delegate { DeleteAnswer(toDelete); };

protected void DeleteAnswer(string answer)
{
}

それ以外の場合は、署名を追加します

deleteButton.Click += delegate(object s, EventArgs e) { DeleteAnswer(s, e, toDelete); };

protected void DeleteAnswer(object sender, EventArgs e, string answer)
{
}
于 2013-07-27T16:22:56.850 に答える
0

delegate namenot its signature-を指定する必要があります。

deleteButton.Click+= ClickHandler;

protected void ClickHandler(object sender, EventArgs e)
{
   DeleteAnswer(sender, e, todelete);
}

protected void DeleteAnswer(object sender, EventArgs e, String answer)
{
}
于 2013-07-27T15:55:22.157 に答える