9

私には3つのボタンがあり、それぞれがイベントを呼び出しbtn_Clickedています。onClickコードビハインドで、ポストバックの原因となったボタンのIDを取得したいと思います。各ボタンを割り当てて別のメソッドを呼び出すことができることは知っていますが、ASP.Netについて少し学びたいと思います。また、どちらの方法がより効率的か教えてください。異なるボタンクリックで異なるメソッドを呼び出すか、同じメソッドを呼び出します(各ボタンの機能が同じ場合)。

4

2 に答える 2

28

送信者オブジェクトをボタンにキャストすると、すべてのプロパティを取得できます。

Button clickedButton = (Button)sender;

また、どちらの方法がより効率的か教えてください。異なるボタンクリックで異なるメソッドを呼び出すか、同じメソッドを呼び出します(各ボタンの機能が同じ場合)。

機能が同じである場合は、コードを複製する必要がないため、単一のイベントを使用することをお勧めします。DRYの原則を覚えておいてください。

次の例を考えてみましょう。

protected void Button1_Click(object sender, EventArgs e)
{
    Button clickedButton = sender as Button;

    if (clickedButton == null) // just to be on the safe side
        return;

    if (clickedButton.ID == "Button1")
    {
    }
    else if(clickedButton.ID == "Button2")
    {
    }
}
于 2012-12-13T04:38:31.903 に答える
5

senderコールバックメソッドの引数が、関心のあるボタンと同じ参照であるかどうかを確認してください。

Button button1;
Button button2;

void OnClick(object sender, RoutedEventArgs args)
{
    Button button = sender as Button;
    if (button == button1)
    {
        ...
    }
    if (button == button2)
    {
        ...
    }
}
于 2012-12-13T04:38:54.273 に答える