André Alves de Lima

Talking about Software Development and more…

Evitar expansão da TreeView ao clicar no "+"

Fala galera!
 
Esses dias eu estava respondendo umas dúvidas no fórum de C# no MSDN e acabei chegando em uma dúvida interessante…
 
Por algum motivo (explicado no post), o desenvolvedor queria evitar que o nó da TreeView expandisse quando o usuário clicasse no símbolo de "+" (contudo, sem remover o símbolo da TreeView), fazendo com que a expansão / retração fosse somente executada quando o usuário desse um duplo clique no nó…
 
Aí fui procurar na Internet pra ver se alguém já tinha feito isso… Como não achei nada, fui tentar implementar… E acabei chegando na seguinte solução:
 
    public partial class Form1 : Form
    {
        private bool _doubleClick = false;

        public Form1()
        {
            InitializeComponent();
        }

        private void treeView1_BeforeExpand(object sender, TreeViewCancelEventArgs e)
        {
            if (!_doubleClick.Equals(true))
                e.Cancel = true;
            else
                _doubleClick = false;
        }

        private void treeView1_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
        {
            _doubleClick = true;
            e.Node.Expand();
        }
    }

Basicamente, criei um atributo chamado _doubleClick, que sempre estará setado como falso, a não ser que um nó tenha sofrido um duplo clique (tratamento através do evento NoveMouseDoubleClick da TreeView). No evento BeforeExpand da TreeView, a gente verifica se esse atributo está true ou false, e faz o tratamento desejado (cancelando ou não a expansão do nó)… Não sei se tem um jeito melhor de fazer, mas, dessa forma funcionou belezinha… =)
 
Para referência, o link do post é:

http://social.msdn.microsoft.com/Forums/pt-BR/vscsharppt/thread/990afef6-7d9f-42d1-adbd-2ad36fb76a7f

Até a próxima!

André Lima

 

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *