簡體   English   中英

更改WinForms的ListView選定的和未聚焦的突出顯示顏色

[英]Change WinForms' ListView selected and unfocused highlight color

我想將ListViewItem的突出顯示顏色設置為與ListView當前處於焦點狀態相同的顏色,即使不是。

將HideSelection屬性設置為False后,當我選擇一個項目然后將焦點放在另一個視圖上時,該顏色將變灰。 我要禁用此功能。

我怎樣才能做到這一點?

與此WPF相關的問題類似(包括用於演示的屏幕截圖): WPF ListView非活動選擇顏色

由於Windows Forms ListView沒有SelectionBackColor或此類屬性(據我所知),我認為最簡單的方法是:

將listview的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;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM