2012-12-13 10 views
7

Mam trzy przyciski, każde wywołanie btn_Clicked na ich onClick zdarzenia. W kodzie za chcę uzyskać identyfikator przycisku, który spowodował odświeżenie. Wiem, że mogę przypisać każdy przycisk, aby wywołać inną metodę, ale chciałbym nauczyć się trochę ASP.Net. Powiedz mi również, która metoda jest bardziej wydajna? Wywoływanie różnych metod za pomocą różnych kliknięć przycisków lub wywoływanie tej samej metody (jeśli funkcjonalność każdego przycisku jest taka sama).Jak wykryć, który przycisk został kliknięty w kodzie?

+1

Użyj obiektu nadawcy w przypadku treser. – ryadavilli

+0

Dowiedz się mvc zamiast – Jeroen

Odpowiedz

20

Prześlij obiekt nadawcy do przycisku, a następnie uzyskasz wszystkie właściwości.

Button clickedButton = (Button)sender; 

mi powiedzieć także, która metoda jest bardziej efektywny? Wywoływanie różnych metod za pomocą różnych kliknięć przycisków lub wywoływania tej samej metody (jeśli funkcje każdego przycisku są takie same).

Jeśli funkcjonalność jest taka sama, lepiej jest mieć jedno zdarzenie, ponieważ nie trzeba replikować kodu. Pamiętaj o DRY principle.

Rozważmy następujący przykład:.

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") 
    { 
    } 
} 
3

Sprawdź, czy sender argument swojej metody wywołania zwrotnego jest takie samo odniesienie jako przycisku interesuje

Button button1; 
Button button2; 

void OnClick(object sender, RoutedEventArgs args) 
{ 
    Button button = sender as Button; 
    if (button == button1) 
    { 
     ... 
    } 
    if (button == button2) 
    { 
     ... 
    } 
} 
+0

To mnie zaskakuje. Myślałem, że == użyje 'Object.equals', co sprawdzi, czy są to te same referencje. Jaka część tego jest nieprawidłowa? – ceyko

+0

To chyba najlepsza praktyka, aby to zrobić i tak (i ​​prawdopodobnie konieczne), stąd moja edycja :) – ceyko

+0

Chciałbym się spierać, czy jest to najlepsza praktyka, czy nie, co jeśli chcesz uzyskać dostęp do ButtonID lub inne informacje związane z jego właściwościami . Musisz rzucić obiekt do przycisku, tak jak teraz – Habib

Powiązane problemy