2 04 2009
Evitar expansão da TreeView ao clicar no "+"
andrealveslima | .NET, Software Development, Windows Forms |
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