Entwickler-Ecke
WinForms - Tag geht verloren???
timo12 - Do 18.03.10 18:20
Titel: Tag geht verloren???
Ich habe ein Phänomen, bei dem ich nicht weiß ob ich zu blöd bin, oder ich zu blöd bin.
Ich habe von DevComponents eine Gallerycollection in der sich ein Buttonitem befindet. Dieses Buttonitem hat 1 Subitem welches auch ein ButtinItem ist. Dem Subitem gebe ich als Tag eine GUID. Nun verknüpfe ich noch ganz braf das Click Event mit einer Funktion. Frage ich dort den Tag ab, ist er leer.
Hier füge ich dem Button das Subitem hinzu:
C#-Quelltext
1: 2: 3: 4:
| ButtonItem _btnsub = new ButtonItem("btnlöschen", "Liste löschen"); _btnsub.Click += new EventHandler(ListenOptionen_Click); _btnsub.Tag = _l.ID.ToString(); _btn.SubItems.Add(_btnsub); |
Und hier mein ListenOptionen_Click:
C#-Quelltext
1: 2: 3: 4: 5:
| void ListenOptionen_Click(object sender, EventArgs e) { DevComponents.DotNetBar.ButtonItem _bi = (ButtonItem)sender; MessageBox.Show(_bi.Tag.ToString()); } |
Und hier ist das Ergebnis "".
Kann mir jemand sagen warum?
Gruß Timo
JüTho - Do 18.03.10 18:36
Hallo,
ich setze mal voraus, dass der sender wirklich das Subitem ist, das den Tag bekommen hat. Das wirst du vermutlich mehrfach hin und her geprüft haben.
timo12 hat folgendes geschrieben : |
Dem Subitem gebe ich als Tag eine GUID. |
Falsch. Du weist dem Tag einen String zu. Aber du kannst die GUID doch direkt zuweisen:
Bei der Abfrage musst du dann nur konvertieren (sicherheitshalber mit Prüfung):
C#-Quelltext
1: 2: 3: 4:
| DevComponents.DotNetBar.ButtonItem _bi = (ButtonItem)sender; GUID id = _bi.Tag as GUID; if (id != null) MessageBox.Show(_bi.Tag.ToString()); |
timo12 hat folgendes geschrieben : |
Nun verknüpfe ich noch ganz braf das Click Event mit einer Funktion. Frage ich dort den Tag ab, ist er leer. |
Da ToString immer einen Wert liefert und bei einer GUID natürlich die übliche String-Darstellung ergeben soll, vermute ich sehr stark, dass bereits bei der Zuweisung die ID nicht mit Inhalt gefüllt ist, sondern den Standardwert Empty enthält oder gar nicht als GUID, sondern als Int32 definiert ist.
Hast du alle Werte per Debugger geprüft? Jürgen
timo12 - Do 18.03.10 18:42
JüTho hat folgendes geschrieben : |
Hallo,
ich setze mal voraus, dass der sender wirklich das Subitem ist, das den Tag bekommen hat. Das wirst du vermutlich mehrfach hin und her geprüft haben.
Hast du alle Werte per Debugger geprüft? Jürgen |
Ja habe ich und wenn ich den Button.Subitems[0].Tag abfrage, bekomme ich die GUID bzw. den String davon auch ausgeworfen. Nur wenn ich auf oben beschriebenen Wege mache (was ich ja muss, weil ich ja nur dann weiß wann und auf welchen Button geklickt wurde) ist die GUID bzw. der Text davon weg.
JüTho - Do 18.03.10 18:48
Probier es doch mal mit einem Standard-Control aus.
Direkt abfragen ist natürlich noch sicherer. Es klingt schon mysteriös.
Was sagt denn im Click-Event sender.GetType(), _bi.GetType(), kannst du _bi anhand des Namens oder so identifizieren?
Jürgen
timo12 - Do 18.03.10 19:22
JüTho hat folgendes geschrieben : |
Probier es doch mal mit einem Standard-Control aus.
Direkt abfragen ist natürlich noch sicherer. Es klingt schon mysteriös.
Was sagt denn im Click-Event sender.GetType(), _bi.GetType(), kannst du _bi anhand des Namens oder so identifizieren?
Jürgen |
Ja, es ist das richtige Control
JüTho - Do 18.03.10 19:52
Dann fällt mir nur noch ein, per Reflector zu prüfen, wie im ButtonItem der Tag registriert wird. Jürgen
timo12 - Fr 19.03.10 08:06
Habe das Problem gelöst. Habe alle Verweise auf die Komponente gelöscht und neu gesetzt, und oh Wunder dann hat es funktioniert.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!