Pergunta

Eu tenho um aplicativo de desktop .Net com TreeView como um dos elementos da interface do usuário.

Quero poder selecionar várias vezes esse TreeView, só que isso não é compatível.

Então, estou adicionando caixas de seleção à árvore. Meu problema é que apenas alguns itens são selecionáveis, e aqueles que não o são, não podem fazer seleções em cascata de forma consistente.

Existe alguma maneira de desabilitar ou ocultar algumas caixas de seleção enquanto exibe outras?

Foi útil?

Solução

O comportamento padrão do TreeView é que quando o Caixas de seleção propriedade for definida como verdadeira, as caixas de seleção serão mostradas para todos os TreeNodes.

O comportamento que você está procurando - desabilitar ou ocultar algumas caixas de seleção - é uma modificação personalizada do comportamento normal.Você pode criar uma implementação personalizada de TreeView ou TreeNode que substitua o comportamento padrão.Outra coisa a tentar seria usar o TreeView.StateImageList propriedade.Alguns sites para conferir mais informações:

Outras dicas

Tive um problema muito semelhante em um editor que escrevi recentemente.No final, usei o TreeNodede BackColor propriedade para determinar o estado de seleção do nó.Eu então escrevi um manipulador para o SelectionChanged evento que verificou o estado das teclas Shift/Control para determinar se o nó selecionado estava sendo adicionado/removido da seleção ou criando uma nova seleção.Houve também um Generic::List<> dos nós que foram selecionados atualmente para eliminar quaisquer pesquisas em árvore.

MultiSelectTreeView:

Por que o .NET não tem uma visualização em árvore multisselecionada?Existem tantos usos para um e ativar as caixas de seleção na visualização em árvore é uma alternativa muito ruim.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top