Domanda

Ho un'applicazione desktop .Net con TreeView come uno degli elementi dell'interfaccia utente.

Voglio essere in grado di selezionare più TreeView, solo che non è affatto supportato.

Quindi sto aggiungendo caselle di controllo all'albero. Il mio problema è che solo alcuni elementi sono selezionabili e quelli che non lo sono non possono sovrapporre in modo coerente le selezioni.

Esiste un modo per disabilitare o nascondere alcune caselle di controllo mentre ne vengono visualizzate altre?

È stato utile?

Soluzione

Il comportamento predefinito di TreeView è che quando il file Caselle di controllo è impostata su true, le caselle di controllo verranno visualizzate per tutti i TreeNode.

Il comportamento che stai cercando, ovvero disabilitare o nascondere alcune caselle di controllo, è una modifica personalizzata del comportamento normale.È possibile creare un'implementazione personalizzata di TreeView o TreeNode che sovrascriva il comportamento predefinito.Un'altra cosa da provare sarebbe usare TreeView.StateImageList proprietà.Alcuni siti a cui consultare per maggiori informazioni:

Altri suggerimenti

Ho avuto un problema molto simile in un editor che ho scritto di recente.Alla fine ho utilizzato il TreeNode'S BackColor proprietà per determinare lo stato di selezione del nodo.Ho quindi scritto un gestore per il file SelectionChanged evento che controllava lo stato dei tasti Maiusc/Control per determinare se il nodo selezionato veniva aggiunto/rimosso dalla selezione o se veniva creata una nuova selezione.C'era anche un Generic::List<> dei nodi attualmente selezionati per eliminare eventuali ricerche sugli alberi.

MultiSelectTreeView:

Perché .NET non dispone di una visualizzazione ad albero a selezione multipla?Ci sono così tanti usi per uno e attivare le caselle di controllo nella visualizzazione ad albero è un'alternativa piuttosto scadente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top