如何使用vb.net将背景颜色设置为列表视图对象中所选行的选定颜色。
我确实看到了一个示例,其中Ownerdraw设置为true - 但它会弄乱列标题。虽然我能够循环子项以使行选择颜色为背景颜色
这是代码块:
For i = 0 To LV_ProductsEdit.SelectedItems.Item(0).SubItems.Count - 1
LV_ProductsEdit.SelectedItems.Item(0).SubItems(i).BackColor = Color.Gold
Next
我有一个类似的循环,在选择新项目时将其恢复为原始透明色。
任何想法。
由于
欧麦
答案 0 :(得分:0)
我仍然不太确定问题是什么。你不需要通过SubItems循环。每个项目都有一个UseItemStyleForSubItems
属性,告诉子项使用相同的Font,ForeColor和BackColor作为父项。默认为True,因此设置Item backcolor应该足够了:
For Each lvi As ListViewItem In myLV.SelectedItems
lvi.BackColor = Color.Gold
Next
原始颜色不是透明的,但应该是SystemColors.Window
。
您还可以将HideSelection
重置为False。当LV没有焦点时,所选项目仍然会突出显示(灰色),这似乎是您在原始问题中提出的问题。
答案 1 :(得分:0)
如果您只想将选择颜色从蓝色更改为其他颜色,请参阅我发现的代码。首先,将ownerdraw设置为true。这里,我的listview被称为ListViewQuote。
Private Sub ListViewQuote_DrawColumnHeader(sender As Object, e As DrawListViewColumnHeaderEventArgs) Handles ListViewQuote.DrawColumnHeader
e.DrawDefault = True
End Sub
Private Sub ListViewQuote_DrawItem(sender As Object, e As DrawListViewItemEventArgs) Handles ListViewQuote.DrawItem
If e.Item.Selected = False Then
e.DrawDefault = True
End If
End Sub
Private Sub ListViewQuote_DrawSubItem(sender As Object, e As DrawListViewSubItemEventArgs) Handles ListViewQuote.DrawSubItem
If e.Item.Selected = True Then
e.Graphics.FillRectangle(New SolidBrush(FromArgb(255, 0, 0)), e.Bounds)
TextRenderer.DrawText(e.Graphics, e.SubItem.Text, New Font(Me.Font, Nothing), New Point(e.Bounds.Left + 3, e.Bounds.Top + 2), HighlightText)
Else
e.DrawDefault = True
End If
End Sub
要改变我的颜色,只需将" New SolidBrush(FromArgb(255,0,0)"更改为您想要的画笔。文本的前景色为" HighlightText& #34;也可以改为任何颜色。
这适用于列表视图的详细信息视图。