2009-11-03 29 views
5

Sto usando un controllo TreeView di Windows Form nel mio programma. Vorrei consentire all'utente di selezionare più nodi allo stesso livello trascinando il loro puntatore del mouse (chiamata anche selezione "lazo"). Non penso che un TreeView standard lo consenta.Selezione multipla in un TreeView

La mia domanda è quale sarebbe il modo migliore per raggiungere questo obiettivo? Devo scrivere un comportamento di selezione personalizzato del mio forse in un controllo personalizzato o derivato? Da dove comincio?

Non ho bisogno di una spiegazione dettagliata. Solo una piccola spinta nella giusta direzione.

risposta

6

Questo non sarà facile da eseguire con un controllo WinForms standard TreeView. Il controllo TreeView supporta solo una selezione singola per albero. Non è possibile selezionare contemporaneamente più nodi nell'albero.

Per ottenere questo comportamento, è probabile che sia necessario creare una classe molto simile a TreeView che ha consentito la selezione multipla. Un'altra opzione è quella di derivare da TreeView e abilitare la selezione multipla ignorando comportamenti specifici. Ecco un articolo su come fare il secondo.

+0

Comprendo l'approccio del controllo personalizzato per ottenere la selezione multipla. Quale direzione, suggeriresti, dovrei prendere per attuare una selezione "lazo"? Devo ricorrere al disegno personalizzato a livello di GDI o esiste un'API o qualcosa che Windows espone per questo, cosa che può rendere più facile il mio lavoro? –

+0

@Frederick, non sono un grande commento su questo. Il mio suggerimento sarebbe quello di aprire una nuova domanda separata focalizzata esclusivamente su come implementare la selezione del laccio su un controllo generico di WinForm. Ciò produrrà probabilmente risultati migliori. – JaredPar

+0

Grazie Jared. Farò proprio questo. –

0

considerare l'implementazione di selezione multipla in un controllo che supporta la selezione multipla come ListView. Se segui standard che la maggior parte degli utenti di Windows comprende, ti ritroverai con una soluzione più facile da implementare e più facile da usare.

Se avete davvero bisogno di qualcosa di più elaborato, potrebbe essere necessario prendere in considerazione lo sviluppo di un controllo personalizzato.

Problemi correlati