dynamic_cast???
-
Hallo, ich habe gerade meine erste C# Applikation geschrieben, nämlich einen kleinen Taschenrechner.
Die Zahlen sind als Buttons dargestellt und das zugehörige Event für jedes dieser Zahlen ist: onClickedNumber(object who, EventArg e);.
Nun stellt sich mir die Frage wie kann ich "object who" wieder zurück casten zu einem Button, um desses .Text Attribut herauszulesen? In C++ würde ich wahrscheinlich dynamic_cast verwenden, gibts in C# etwas dergleichen?
Momentan löse ich das so:
private void onClickedNumber(object who, EventArgs e) { // Is there an easier way? (C++ dynamic_cast?) for (byte i = 0; i < 10; i++) { if (who == m_allNumbers[i]) { } } }
Danke bereits im voraus!
-
Button b = who as Button; MessageBox.Show(b.Text);
-
Firefighter schrieb:
Button b = who as Button; MessageBox.Show(b.Text);
Dankeschön! Genau sowas hab ich gesucht
-
Oder
Button _newButton = (Button)sender;
-
Doug_HH schrieb:
Oder
Button _newButton = (Button)sender;
Das ist glaube ich eher ein
static_cast
, da, wenn die Konvertierung schief geht, eine Ausnahmne ausgelöst wird und beias
nurnull
zurückgegeben wird (Auf das man auch Überprüfen sollte!).
-
Hast wohl recht, ist die besser Lösung...
Button _a = sender as Button; if (_a != null) { MessageBox.Show(_a.Name); } else { MessageBox.Show("Kein Button"); }
-
Anzumerken sei aber noch das "as" nur für Typen funktionieren die auch null sein können.
-
Das ist hier aber nicht so schlimm, da es ja um ein 'object' handelt.