Kann das .tag property der Imagelist-Images nicht setzen?

25/01/2010 - 10:33 von Eric | Report spam
Hallo @all,

Ich erstelle eine Imagelist zur Laufzeit. Diese fülle ich mit
Bilderchen aus einem bestimmten Ordner. Das funktioniert einwandfrei.
Zusàtzlich sollen alle Bilder aus imagelist.images mit einem Tag
versehen werden, den ich spàter im Code benötige. Das Setzen des tag
property scheint zu funktionieren, der Debugger meldet keine Fehler.
Ein spàterer Abruf des tag property liefert allerdings immer nothing
zurück?

folgender Code Auszug:

tvImagelist = New ImageList
tvImagelist.ImageSize = New Size(25, 25)
tvImagelist.ColorDepth = ColorDepth.Depth24Bit
tvImagelist.Tag = "test"
Dim i As Integer = 0

For Each File As String In My.Computer.FileSystem.GetFiles
(Application.StartupPath & "\Icons\Folder")
Dim newImage As Image
Try
newImage = Image.FromFile(File)
newImage.Tag = "test1"
tvImagelist.Images.Add("folder" & i.ToString,
newImage)
tvImagelist.Images.Item(tvImagelist.Images.Count -
1).Tag = "test2"
tvImagelist.Images(tvImagelist.Images.Count - 1).Tag "test3"
i = i + 1
Catch ex As Exception
MsgBox("One of the files in the icons folder is not an
image." & vbCrLf & ">" & File & "<", MsgBoxStyle.Exclamation)
End Try
Next

For a As Integer = 0 To tvImagelist.Images.Count - 1
Dim img As Image = tvImagelist.Images(a)
Dim t As Object = tvImagelist.Images(a).Tag
Dim t2 As Object = tvImagelist.Images.Item(a).Tag
Dim t3 As Object = img.Tag
MsgBox("done")
MsgBox(t & t2 & t3)
Next



Die letzte for-Schleife dient mir zum Testen. Steppe ich mit dem
Debugger auf die MsgBoxes sind alle der t-Variablen = nothing, ich
bekomme einfach keine Werte zurück. Eigentlich sollte der tag eine
eigene Klasse sein, zum Test habe ich es ganz doof mit den "test"-
strings probiert - ebenfalls ergebnislos. Der einzige tag der
Ergebnisse liefert ist tvImagelist.Tag = "test", also der tag der
Imagelist selbst.

Bitte erweitert meinen Horizont :-)

Gruss,
Eric
 

Lesen sie die antworten

#1 Thorsten Doerfler
25/01/2010 - 11:18 | Warnen spam
Eric schrieb:
Ich erstelle eine Imagelist zur Laufzeit. Diese fülle ich mit
Bilderchen aus einem bestimmten Ordner. Das funktioniert einwandfrei.
Zusàtzlich sollen alle Bilder aus imagelist.images mit einem Tag
versehen werden, den ich spàter im Code benötige. Das Setzen des tag
property scheint zu funktionieren, der Debugger meldet keine Fehler.
Ein spàterer Abruf des tag property liefert allerdings immer nothing
zurück?



Beim Abruf eines Images aus der ImageList bekommst Du nicht die Referenz
eines bestehenden Images zurück, sondern immer eine Kopie des Images.
Somit gehen auch alle zusàtzlichen Eigenschaften verloren, wie diese im
Tag verloren.

Da Du den Images einen Key zuordnest, kannst Du ja ggf. diesen verwenden
um ein zusàtzliches Dictionary mit den Zusatzinformationen zu pflegen.

Thorsten Dörfler
Microsoft MVP Visual Basic

vb-hellfire visual basic faq | vb-hellfire - einfach anders
http://vb-faq.de/ | http://www.vb-hellfire.de/

Ähnliche fragen