Bild in einer ImageList ersetzen

29/10/2009 - 22:50 von Thomas Kehl | Report spam
Hallo zusammen.

Ich verwende folgenden Code, um ein Bild in einer ImageList zu
ersetzen:

// Bild aus ImageList ilConfigItems löschen, sofern vorhanden
if (ilConfigItems.Images.ContainsKey(configurationItem.Key.ToString
())) {
ilConfigItems.Images.RemoveByKey(configurationItem.Key.ToString
());
}
if (configurationItem.Icon != null) {
ilConfigItems.Images.Add(configurationItem.Key.ToString(),
configurationItem.Icon);
node.ImageIndex = ilConfigItems.Images.IndexOfKey
(configurationItem.Key.ToString());
}

Nun liefert mir die Zeile
ilConfigItems.Images.IndexOfKey(configurationItem.Key.ToString());
immer -1 zurück. Das bild ist aber sicher drin (wurde ja davor
hinzugefügt). Im Debugger habe ich gesehen, dass, wenn das bild
entfernt wird mit RemoveByKey der Key nicht rausgelöscht wird und
somit irgendwie die Verbindung Key/Image nicht mehr zu klappen
scheint.
Kann mir jemand helfen, wie ich das am besten bewerkstellige? - Vielen
Dank!

Herzliche Grüsse, Thomas
 

Lesen sie die antworten

#1 Frank Dzaebel
30/10/2009 - 07:55 | Warnen spam
Hallo Thomas,

[...] configurationItem.Key.ToString() [...]



ich kann natürlich nicht sagen, was "configurationItem"
ist, weil Du das nicht angegeben hast, aber ich nehme
mal an, die Konstruktion erzeugt einen String, der als
Key in der ImageList enthalten ist. Validiere das.


ilConfigItems.Images.RemoveByKey(...); // [...]
ilConfigItems.Images.Add(..., configurationItem.Icon);



Das entfernte Image kann an einer Stelle in der Mitte
der Image-Liste gewesen sein und die Add-Methode
fügt es ans Ende ein. Trotzdem sollte dann IndexOfKey()
einen Wert ungleich -1 zurückliefern, deswegen vermute
ich den "Fehler" bei:
configurationItem.Key.ToString()

____
BTW: Du wiederholst Du diese Form im Code stàndig,
mach das über eine Variable.

[Don't repeat yourself - Wikipedia]
http://de.wikipedia.org/wiki/Don%E2...t_yourself
http://www.clean-code-developer.de/...ourselfDRY


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen