我想将ListViewItem的高亮颜色设置为与ListView当前处于焦点状态时相同的颜色,即使它不是。将HideSelection属性设置为False后,当我选择一个项目并聚焦到另一个视图时,颜色会变灰。我想禁用这个功能。如何实现呢?类似于这个与WPF相关的问题(包括演示截图):WPF ListView Inactive Selection Color。
由于 Windows Forms 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;
});
}
与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;
}
}