Casting funktioniert nicht so wie erwartet
-
Hey Leute,
ich habe erneut ein Problem, bei dem ich nicht wirklich weiter komme.
Ich habe einige TextBoxen auf dem Formular, ich habe für eine Textbox im Ereignis "Validating" eine kleine Routine geschrieben.
Durch den Objektinspektor habe ich bei jeder TextBox für das Ereignis "Vailidating" das eine "fertige" (von einer anderen Textbox) ausgewählt.
Es ist wirklich nicht viel aber ich bekomme es einfach nicht hin.
private: System::Void aEKPreisTextBox_Validating(System::Object^ sender, System::ComponentModel::CancelEventArgs^ e) { Single erg; if(!Single::TryParse(TextBox(sender)->Text, erg)) { TextBox(sender)->Text = String::Empty; } else TextBox(sender)->Text = Convert::ToString(Math::Round(erg,2)); }
So wie ich das gelernt habe enthält "sender" das Objekt das das Ereignis ausgelöst hat.
Jetzt möchte auch das Objekt zu greifen aber hier kommen folgende Meldungen
: error C2440: '<function-style-cast>': 'System::Object ^' kann nicht in 'System::Windows::Forms::Control' konvertiert werden Quelltyp konnte von keinem Konstruktor angenommen werden, oder die Überladungsauflösung des Konstruktors ist mehrdeutig : error C2227: Links von "->Text" muss sich ein Zeiger auf Klassen-/Struktur-/Union-/generischen Typ befinden. ...
Diese Meldungen wiederholen sich noch einige Mal.
Was ich aus diesen Meldungen herauslesen kann ist, das ich das nicht konvertieren kann aber wieso nicht, und wie könnte ich das?
Es währe doch schwachsinnig für jede einzelne TextBox eine eigene Ereignisroutine zu schreiben die genau das gleich macht oder?
Falls es in C++/CLI nicht so einfach bzw. nicht geht, dann sorry habe es dann mit Delphi Language verwechselt.
Bitte um Antworten
Gruß
Rudi G
-
Deine Syntax für den Cast ist falsch:
Bsp.
Object^ sender; TextBox^ textbox = safe_cast<TextBox^>(sender); textbox->Text = "hello"; // bzw. safe_cast<TextBox^>(sender)->Text = "hallo";
Simon
-
simon.gysi schrieb:
Deine Syntax für den Cast ist falsch:
Bsp.
Object^ sender; TextBox^ textbox = safe_cast<TextBox^>(sender); textbox->Text = "hello"; // bzw. safe_cast<TextBox^>(sender)->Text = "hallo";
Simon
Ok super vielen Dank, genau das war mein Fehler, um genau zu sein, wusste ich nicht welche Typ vom cast ich nehmen soll. (irgendwie war mir die "Online-Hilfe" nicht gerade nützlich)
Gruß
Rudi G