Come posso rimuovere lo stato attivo da tutti gli elementi in un controllo ListView?
Domanda
In un controllo ListView
, l'attenzione è focalizzata su alcuni Item
all'interno di quel controllo - ovvero, il controllo mantiene la propria nozione interna di ciò che è attivo, che può essere recuperato utilizzando la proprietà FocusedItem
.
Vorrei che no fossero focalizzati. In altre parole, voglio che la proprietà FocusedItem
sia impostata su null
. Hai idea di come potrei ottenere questo?
Soluzione
Per espandere la risposta di Vanuan:
if (listView1.FocusedItem != null)
{
listView1.FocusedItem.Focused = false;
}
Qualcosa mi dice che vuoi anche deselezionare l'elemento. Quindi, probabilmente vorrai farlo anche tu:
if (listView1.SelectedItems.Count != 0)
{
listView1.SelectedItems[0].Selected = false;
}
Altri suggerimenti
Penso che sia
listView1.FocusedItem.Focused=false;
Assicurati che listView1.FocusedItem non sia null.
(Grazie a brianpeiris per l'espansione)
Quando vengono aggiunti nuovi elementi a un controllo di visualizzazione elenco, viene disegnato un riquadro punteggiato attorno agli elementi. Ci sono alcune situazioni in cui non vuoi questo segnale visivo. È sufficiente evidenziare gli articoli selezionati. Ecco un modo per impedire la visualizzazione della casella punteggiata quando si aggiungono nuovi elementi a un controllo di visualizzazione elenco.
ListViewItem item = new ListViewItem();
myListView.Items.Add(item);
myListView.SelectedItems.Clear();
myListView.FocusedItem = null;
myListView.Refresh();
UPDATE:
La mia soluzione non risolve il problema. Vorrei che ci fosse un modo semplice per "unfocus" un controllo ma dopo aver cercato su Google per diverse ore non sono riuscito a trovarne. Anch'io cercavo un modo per impedire che quelle linee tratteggiate venissero visualizzate. Quando faccio clic su un pulsante per aggiungere elementi di visualizzazione elenco non c'è problema. È solo quando premo Invio dopo aver premuto il tasto Tab su un pulsante (ricevendo il focus di input) questo appare.