我想将ListViewItem的高亮颜色设置为与ListView当前焦点相同的颜色,即使它不是。
将HideSelection属性设置为False后,当我选择一个项目然后聚焦于另一个视图时,颜色将变灰。我想禁用它。
我该怎么做?
与此WPF相关的问题(包括演示的屏幕截图)类似:WPF ListView Inactive Selection Color
答案 0 :(得分:7)
由于Windows窗体ListView没有SelectionBackColor
或此类属性(据我所知),我认为最简单的方法是:
将列表视图的HideSelection
属性设置为true
,然后:
private void listView1_SelectedIndexChanged(object sender, EventArgs e)
{
this.listView1.Items.Cast<ListViewItem>()
.ToList().ForEach(item =>
{
item.BackColor = SystemColors.Window;
item.ForeColor = SystemColors.WindowText;
});
this.listView1.SelectedItems.Cast<ListViewItem>()
.ToList().ForEach(item =>
{
item.BackColor = SystemColors.Highlight;
item.ForeColor = SystemColors.HighlightText;
});
}
答案 1 :(得分:0)
与Reza想法相同,但效率更高:
private void uxListViewTest_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e) {
if (e.IsSelected) {
e.Item.BackColor = SystemColors.Highlight;
e.Item.ForeColor = SystemColors.HighlightText;
}
else {
e.Item.BackColor = BackColor;
e.Item.ForeColor = ForeColor;
}
}