ListView Icon
- VB.NET
Sie verwenden einen veralteten Browser (%browser%) mit Sicherheitsschwachstellen und können nicht alle Funktionen dieser Webseite nutzen.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Es gibt 15 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.
-
-
@Pixxxas Es sieht tatsächlich so aus, als ob man einem
ListViewSubItem
keinen ImageIndex zuordnen könne.
Zeit also zum Umstieg aufDataGridView
, da geht das problemlos.
Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch
Ein guter .NET-Snippetkonverter (der ist verfügbar).
Programmierfragen über PN / Konversation werden ignoriert! -
-
@Pixxxas Vielleicht mit
OwnweDraw
, aber da werde ich gewiss kein Testprojekt auflegen, da ichListView
für mich nicht wieder aus dem Mülleimer raushole. Sorry.Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch
Ein guter .NET-Snippetkonverter (der ist verfügbar).
Programmierfragen über PN / Konversation werden ignoriert! -
Folgendes,
So sieht es jetzt aus (Bild 1) wenn in der Spalte bei Notiz eine 1 steht, soll ein Icon rein.
Das mache ich mit;
VB.NET-Quellcode
- Private Sub ListView1_DrawSubItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawListViewSubItemEventArgs) Handles ListView1.DrawSubItem
- If e.Item.SubItems(7) Is e.SubItem Then
- If e.SubItem.Text = "1" Then
- e.Graphics.DrawImage(My.Resources.delete, e.Bounds.X, e.Bounds.Y, e.Bounds.Height, e.Bounds.Height)
- End If
- Else
- e.DrawDefault = True
- End If
- End Sub
- End Class
Dann sieht das aber so aus (Bild 2)
Das Icon ist da aber es ist nicht mehr FullRowSelect und die Backcolor ist nur in Spalte 1
Ich hab es schon mit versucht aber es ändert sich nicht -
Pixxxas schrieb:
False
.Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch
Ein guter .NET-Snippetkonverter (der ist verfügbar).
Programmierfragen über PN / Konversation werden ignoriert! -
-
@Pixxxas Beschreib mal verbal, was da passieren (gemalt werden) soll.Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch
Ein guter .NET-Snippetkonverter (der ist verfügbar).
Programmierfragen über PN / Konversation werden ignoriert! -
@RodFromGermany steht im SubItem7 eine 1 soll anstelle der 1 ein Icon aus den Ressourcen eingefügt werden.
Geht ja im Grunde auch nur FullRow und die BackColor ist dann auf Column 1 beschränkt. -
@Pixxxas Jou.
Bei mir tut er es so:
VB.NET-Quellcode
- Private Sub ListView1_DrawSubItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawListViewSubItemEventArgs) Handles ListView1.DrawSubItem
- If e.Item.SubItems(7) Is e.SubItem AndAlso e.SubItem.Text = "1" Then
- e.Graphics.DrawImage(My.Resources.delete, e.Bounds.X, e.Bounds.Y, e.Bounds.Height, e.Bounds.Height)
- Else
- e.DrawDefault = True
- End If
- End Sub
VB.NET-Quellcode
- Me.ListView1.OwnerDraw = True
- Me.ListView1.View = View.Details
- Me.ListView1.LabelEdit = True
- Me.ListView1.AllowColumnReorder = True
- Me.ListView1.CheckBoxes = True
- Me.ListView1.FullRowSelect = True
- Me.ListView1.GridLines = True
- Me.ListView1.Sorting = SortOrder.Ascending
- Me.ListView1.UseCompatibleStateImageBehavior = False
Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch
Ein guter .NET-Snippetkonverter (der ist verfügbar).
Programmierfragen über PN / Konversation werden ignoriert! -
Danke @RodFromGermany so weit so gut
aber wie mache ich das jetzt mit der BackColor?
VB.NET-Quellcode
- For Each LWI As ListViewItem In ListView1.Items
- If LWI.SubItems(8).Text.Contains("42") Then ' LWI.SubItems(1) steht für die 2te Spalte, da der Index bei 0 anfängt.
- LWI.BackColor = Color.White
- ElseIf LWI.SubItems(8).Text.Contains("50") Then
- LWI.BackColor = Color.Yellow
- ElseIf LWI.SubItems(8).Text.Contains("52") Then
- LWI.BackColor = Color.LightGreen
- End If
- Next
so mache ich das gerade mit einem Timer. -
@Pixxxas Probiere mal, es genau so zu machen.
BackColor im Ownerdraw geht so:
Musst dann nur noch den Text reinschreiben.
=====
Langsam wird es aber Zeit, dass Du auf einDataGridView
umsteigstFalls Du diesen Code kopierst, achte auf die C&P-Bremse.
Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch
Ein guter .NET-Snippetkonverter (der ist verfügbar).
Programmierfragen über PN / Konversation werden ignoriert! -
-
@Pixxxas Klar, Du musst jedes Item einzeln malen.
Genau das ist OwnerDraw.Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch
Ein guter .NET-Snippetkonverter (der ist verfügbar).
Programmierfragen über PN / Konversation werden ignoriert! -
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Pixxxas“ ()
-
Pixxxas schrieb:
geht nicht
Setz nen Haltepunkt rein. Kommt er dort vorbei?
e.DrawDefault = True
sollte danach nicht stehen, da musst Du alles selber malen.Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch
Ein guter .NET-Snippetkonverter (der ist verfügbar).
Programmierfragen über PN / Konversation werden ignoriert!
-
Benutzer online 1
1 Besucher
-
Ähnliche Themen
-
ronaldl - - Sonstige Problemstellungen
-
lris08 - - Sonstige Problemstellungen
-
2 Benutzer haben hier geschrieben
- RodFromGermany (8)
- Pixxxas (8)