Zmiana Button.Text po jego kliknięciu

Zmiana Button.Text po jego kliknięciu
mimirus
  • Rejestracja: dni
  • Ostatnio: dni
0

Pilne,
Jak w tytule, nie używając nazwy Button1. Jak to zrobić?
protected void Button1_Click(object sender, EventArgs e)
{
Button1.Text = "kurcze"; // tak jest ok
???????.Text ="HELP!"; // a potrzebuję jakoś tak, tzn bez bezpośredniej nazwy własnej
}

Kopiuj
Pięknie dziękuje.
somekind
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
2

Przycisk, który wcisnąłeś masz w parametrze sender, musisz więc go zrzutować na Button i zrobić, co chcesz.

mimirus
  • Rejestracja: dni
  • Ostatnio: dni
0

Zadziałało:
(sender as Button).Text = "JUŻ WIEM!";

Kopiuj
... a czy jest jeszcze inny zapis tego samego? No... tak pytam.
Dzięki
mm
Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
0

Jest rzutowanie na przykład.

somekind
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
1
mimirus napisał(a):

Zadziałało:
(sender as Button).Text = "JUŻ WIEM!";

Kopiuj
... a czy jest jeszcze inny zapis tego samego? No... tak pytam.
> Dzięki
> mm

Taki zapis jest bez sensu. Używanie `as` ma sens, gdy nie jesteśmy pewni, czy obiekt jest potrzebnego nam typ, zaś po użyciu tego operatora sprawdzamy, czy wynik jego działania jest `null`. W tym kodzie, gdyby sender nie był Buttonem, to miałbyś brzydki wyjątek NullReferenceException.

Prawidłowe użycie `as` wygląda tak:
```csharp
Button b = jakiśObiekt as Button;
if (b != null)
{
    // Tu zrobimy coś z Buttonem
}
 

Ale w tej sytuacji jesteś pewien, że sender jest typu Button (bo to zdarzenie jest podpięte właśnie do przycisku), więc powinieneś użyć zwykłego rzutowania:
((Button)sender).Text = "JUŻ WIEM!";

Kopiuj

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.