cool Danke
aber dieses OwnerDraw macht mich echt verrückt
jetzt habe ich es fast soweit wie ich es möchte aber es macht mucken bis zum geht nicht mehr.
meine Probleme
so erstmal mein jetziger Code:
'------------------------Erstellen und zeichnen des
' Listviews--------------------------------------------------
Dim lvw_Sicherheit As ListViewGroup
Private WithEvents listView1 As New ListView()
Private Sub ListView1_DrawItem(ByVal sender As Object, ByVal e As _
DrawListViewSubItemEventArgs) Handles listView1.DrawSubItem
e.DrawBackground()
If (e.ItemState And ListViewItemStates.Selected) <> 0 Then
e.Graphics.FillRectangle(Drawing.Brushes.SpringGreen, e.Bounds)
e.Graphics.DrawString(e.SubItem.Text, Me.listView1.Font, _
Drawing.Brushes.Black, e.Bounds.X, e.Bounds.Y)
Else
e.Graphics.FillRectangle(Drawing.Brushes.Transparent, e.Bounds)
e.Graphics.DrawString(e.SubItem.Text, Me.listView1.Font, _
Drawing.Brushes.Black, e.Bounds.X, e.Bounds.Y)
End If
If e.Item.ImageIndex <> -1 Then
e.Graphics.DrawImage(listView1.SmallImageList.Images( _
e.Item.ImageIndex), 1, 1)
End If
End Sub
Private Sub listView1_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles listView1.Click
If listView1.FocusedItem.Index = 0 Then
listView1.Groups(0).Items(0).SubItems(1).Text = "tester"
End If
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles MyBase.Load
With Me.listView1
.SmallImageList = ImageList1
.BackColor = Color.White
.ForeColor = Color.Black
.View = View.Details
.FullRowSelect = True
.OwnerDraw = True
.Location = New Point(12, 42)
.Size = New System.Drawing.Size(537, 372)
.Scrollable = True
.BorderStyle = BorderStyle.Fixed3D
.HeaderStyle = ColumnHeaderStyle.None
.MultiSelect = False
.ShowGroups = True
End With
With Me.listView1.Columns
.Add("Name", 360, HorizontalAlignment.Left)
.Add("First", 173, HorizontalAlignment.Center)
End With
lvw_Sicherheit = New ListViewGroup("Sicherheit", "Sicherheits" & _
"Einstellungen")
lvw_Sicherheit.HeaderAlignment = HorizontalAlignment.Center
listView1.Groups.Add(lvw_Sicherheit)
fuellelistview()
With Me
.Controls.Add(Me.listView1)
End With
End Sub
'----------------------------------------------------ende------------------
' --------------
'----------------------------------------listview
' füllen-------------------------------------
Sub fuellelistview()
listView1.BeginUpdate()
listView1.Items.Clear()
Dim listViewItem0 As New ListViewItem(New String() {"eintrag 1", ""}, _
lvw_Sicherheit)
Dim listViewItem1 As New ListViewItem(New String() {"eintrag 2", ""}, _
lvw_Sicherheit)
Me.listView1.Items.AddRange(New ListViewItem() {listViewItem0, _
listViewItem1})
listView1.EndUpdate()
End Sub Und hier macht es mal wieder probleme:
Private Sub listView1_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles listView1.Click
If listView1.FocusedItem.Index = 0 Then
listView1.Groups(0).Items(0).SubItems(1).Text = "tester"
End If
End Sub Wenn ich jetzt den ersten Listview eintag anklicke ändert sich das Subitem auf tester so wie es sein sollte. nur wird aber gleichzeitig nur das Subitem in SpringGreen markiert und der Item eintrag ist weiß oder transparent.
wo habe ich da meine probleme?
Noch eine Frage hätte ich. Ich komme mit den images nicht klar.
Ich möchte gerne per Button ein Image aus der Imagelist auf den Eintrag 1 zeichnen. zb.
wie funktioniert das bitte.
Danke für die Geduld und Hilfe. Hoffe auf eine Lösung meines Problems. |