Domanda

Ho un controllo ListView e sto cercando di capire il modo più semplice/migliore per impedire la modifica delle righe selezionate, senza nascondersi le righe selezionate.

So che c'è un HideSelection proprietà, ma funziona solo quando il ListView è ancora abilitato (ma non focalizzato).Ho bisogno che la selezione sia visibile anche quando ListView è disabilitato.

Come posso implementarlo?

È stato utile?

Soluzione

Puoi anche far ritirare il proprietario di ListView. Avrai quindi il controllo completo sull'aspetto degli elementi, indipendentemente dal fatto che siano selezionati o meno o se ListView stesso è abilitato o meno. DrawListViewItemEventArgs fornisce un modo per chiedere a ListView di disegnare singole parti dell'elemento in modo da disegnare solo i bit che ti interessano. Ad esempio, puoi disegnare lo sfondo dell'elemento ma lasciarlo su ListView per disegnare il testo.

Altri suggerimenti

Ci sono due opzioni, cambia i colori disabilitati per le righe selezionate. Oppure modifica tutte le altre righe per simulare che sono disabilitate ad eccezione di quella selezionata. La prima opzione è ovviamente la più semplice e la seconda ovviamente avrà bisogno di alcune protezioni extra.

In realtà ho già fatto la prima opzione prima e funziona abbastanza bene. Devi solo ricordare di ripristinare i colori ai valori predefiniti nel caso in cui un'altra riga sia selezionata più avanti nel processo.

Implementa SelectedIndexChanged e fai questo

    private void listViewABC_SelectedIndexChanged(object sender, EventArgs e)
    {
        listViewABC.SelectedItems.Clear();
    }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top