Images verschwinden

30/08/2008 - 10:26 von Karsten Sosna | Report spam
Hallo NG,
merkwürdiges Verhalten. Mit folgendem Code füge ich Items in ein
ListView(LV_documents) ein. Ebenfalls werden Images in eine
ImgaeList(IML_Documents) eingefügt und Items als Image zugewiesen.
\\\
Private Sub TSB_AddDoc_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles TSB_AddDoc.Click
With OpenFileDialog1
.Filter = "Alle Dateien(*.*)|*.*"
.Multiselect = True
.CheckFileExists = True
If .ShowDialog = Windows.Forms.DialogResult.OK Then
Dim guid As New Guid
For Each fileName In .FileNames
Dim fi As New IO.FileInfo(fileName)
Dim shfi As New XR.PInvoke.SHFILEINFO
Dim flags As XR.PInvoke.SHGFIs = XR.PInvoke.SHGFIs.SMALLICON
Or XR.PInvoke.SHGFIs.ICON
XR.PInvoke.SHGetFileInfo(filename, 0, shfi,
System.Runtime.InteropServices.Marshal.SizeOf(shfi), flags)
Dim strGUID = guid.NewGuid.ToString
Dim ico = Icon.FromHandle(shfi.hIcon)
IML_Documents.Images.Add(strGUID, ico.ToBitmap)
Dim lvi = LV_Documents.Items.Add(fi.Name)
lvi.ImageKey = strGUID
Next
End If
End With
End Sub
\\\
Soweit funktioniert das auch ohne Probleme. Jetzt habe ich aber noch eine
Routine um Items wieder zu löschen:
\\\
Private Sub TSB_DeleteDoc_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles TSB_DeleteDoc.Click
With LV_Documents
Do Until .SelectedItems.Count = 0
IML_Documents.Images.RemoveByKey(.SelectedItems(0).ImageKey)
.SelectedItems(0).Remove()
Loop
End With
End Sub
///
Wenn ich nun einige Items selektiere und lösche passiert es das bei manchen
Items ebenfalls die Images verschwinden. Oder sagen wir mal so, nicht mehr
oder falsch angezeigt werden. Kommentiere ich
IML_Documents.Images.RemoveByKey(.SelectedItems(0).ImageKey) aus
funktioniert alles. Ich habe schon die Keys überprüft, keine doppelten. Die
Handles der Icon, ebenfalls keine doppelten. Hab ich hier irgendwo einen
Gedankenfehler?

Danke für jede Hilfe.
Gruß Scotty
 

Lesen sie die antworten

#1 Karsten Sosna
30/08/2008 - 10:45 | Warnen spam
Private Sub TSB_DeleteDoc_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles TSB_DeleteDoc.Click
With LV_Documents
Do Until .SelectedItems.Count = 0
IML_Documents.Images.RemoveByKey(.SelectedItems(0).ImageKey)
.SelectedItems(0).Remove()
Loop
End With
End Sub



Irgendwie "rafft" es das ListView nicht. Ich habe mal geschaut ob die
benötigten Images auch noch in der ImageList vorhanden sind, sind sie. Dann
habe ich mir die Images in der ImageList angeschaut und siehe da, alle
Images werden richtig angezeigt. Also an denen liegt es nicht, warum auch
immer, sie werden nicht mehr im ListView angezeigt. Ich steh völlig im Wind.
:=(
Gruß Scotty

Ähnliche fragen