Auf Property Tag vom Button zugreifen.
-
Hallo Leute
Ich hab ein weiteres kleines Problem, bei dem ich eure Hilfe brauche.
Grundlage ist die selbe wie in diesem Thread angegeben:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-207116-and-highlight-is-casting.html
Ich möchte in einer Ereignisbehandlungsroutine auf das Sendeobjekt zugreifen.
Genauer gesagt möchte ich auf das Tag Property zugreifen.Dazu habe ich momentan folgenden Code:
Button^ but = safe_cast<Button^>(sender);
Nun kann ich zwar mit einer weiteren Zeile:
shifts = but->Tag;
auf Tag zugreifen, jedoch wirft mir der Kompiler nen Fehler:
error C2440: '=': 'System::Object ^' kann nicht in 'int' konvertiert werden
In dem Tag Property hab ich ints, also Zahlen drin stehen. Hab auch schon versucht das Tag Objekt zu casten aber das geht auch nicht, da ich da schon beim Konstruktor scheitere....
Könnt ihr mir da ne Hilfestellung geben?
Danke und Grüße
Daimonion
-
shifts = (int) but->Tag;
?
-
Hallo
Klar, das Casting nach (int) macht durchaus Sinn.
Aber leider wirft mir dann das Programm zur Laufzeit eine Exception:
Umwandlung ist ungültig.
Dieses Tag Property ist da sicher noch was spezielles oder?
Dennoch danke für deine Antwort.
-
daimonion schrieb:
Aber leider wirft mir dann das Programm zur Laufzeit eine Exception:
Umwandlung ist ungültig.
Dann ist Tag kein int.
Dieses Tag Property ist da sicher noch was spezielles oder?
Nein, Tag ist einfach nur irgendein Object^.
-
Das Tag kein Int ist, hab ich mir auch schon gedacht.
Nur wenn ich im Eigenschaftseditor von VS2005 bei dem Objekt Button im Feld Tag einen Wert reinschreibe, wie kann ich denn den im Code in der Ereignisbehandlungsroutine wieder auslesen?
-
Wenn Du im Eigenschaftenfenster etwas hineinschreibst, wird es als String gespeichert. Du musst dann Tag nach String casten.
Wenn Du einen Integer herausholen willst, musst Du vorher auch ein Integer hineinlegen. Das geht aber nur im Programm, da der Designer wie gesagt immer Strings speichert.
-
Danke LordJaxom
Der Hinweis auf dem String hat die entscheidende Lösung gebracht.
Habs jetzt wie folgt gelöst:
shifts = System::Convert::ToInt16(safe_cast<Button^>(sender)->Tag);
Danke und Grüße
Daimonion