Como adicionar funcionalidade de arrastar-e-soltar TreeView em um aplicativo Visual Basic .NET ou Visual Basic 2005

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 307967
Para obter uma Microsoft Visual translation from VPE for Csharp .NET versão deste artigo, consulte 307968.
Para uma versão deste artigo do Microsoft Visual Basic 6.0, consulte 177743.

NESTA TAREFA

Sumário
Este artigo demonstra como executar uma operação de arrastar-e-soltar conosco de árvore entre dois controles TreeView em um aplicativo Visual Basic .NET ou Visual Basic 2005.

back to the top

Requisitos

A lista a seguir descreve o hardware recomendado, software, infra-estrutura de rede e service packs que você precisa:
  • Visual Basic .NET ou Visual Basic 2005
Este artigo pressupõe que você esteja familiarizado com os seguintes tópicos:
  • Controle TreeView do Windows Forms
  • Tratamento de evento do Windows Forms
back to the top

Descrição da técnica

O controle TreeView fornece três eventos de arrastar-e-soltar que você deve tratar:
  • ItemDrag : este evento é gerado da fonte de controle TreeView assim que o usuário iniciar arrastar o nó de árvore. Quando isso ocorre, chame o método DoDragDrop para iniciar o procedimento de arrastar-e-soltar.
  • DragEnter : após você inicia a operação arrastar-e-soltar, você deve manipular o evento DragEnter no destino controle TreeView . Esse evento ocorre quando o usuário arrasta o objeto TreeNode da fonte de controle TreeView para um ponto dentro dos limites de destino controle TreeView . O evento DragEnter permite que o controle TreeView para especificar se a operação de arrastar é válida para esse controle de destino. O exemplo de código neste artigo permite que somente a operação de movimentação.
  • DragDrop : O último evento para manipular é o evento DragDrop do destino controle TreeView . Esse evento ocorre quando o objeto TreeNode que é arrastado foi descartado no controle TreeView de destino. Para tratar este evento, recuperar o objeto TreeNode e adicione o objeto para o controle TreeView do destino. O exemplo de código usa o objeto de dados para recuperar os dados.
O exemplo de código neste artigo garante que um objeto TreeNode foi arrastado para o controle TreeView do destino. O método GetData do objeto de dados recupera o nó que é arrastado do controle de origem. O método GetNodeAt determina onde este nó é descartado no controle destino. Depois de determinar a posição, adicione o nó de origem como um filho do nó de destino. Como este exemplo executa uma operação de mudança, a última etapa é remover o nó de origem do controle TreeView original.

back to the top

Passos para criar o exemplo

  1. Crie um novo Windows Application no Visual Basic .NET ou em Visual Basic 2005. O Form1 é criado por padrão.
  2. Use a caixa de ferramentas para adicionar dois controles TreeView para Form1. TreeView1 e TreeView2 são criados por padrão.
  3. Para permitir que os controles TreeView para ser arrastado e solto, altere a propriedade AllowDrop tanto TreeView1 TreeView2 como True na janela Properties.
  4. Clique duas vezes em Form1 para gerar o manipulador de método para o evento Load do Form1. Adicione o seguinte código para preencher os dois controles TreeView com objetos TreeNode :
    Private Sub Form1_Load(ByVal sender As System.Object, _                        ByVal e As System.EventArgs) Handles MyBase.Load    Dim ParentNode1 As TreeNode    Dim ParentNode2 As TreeNode    ParentNode1 = TreeView1.Nodes.Add("tv1")    With ParentNode1        .Nodes.Add("tv1FirstChild")        .Nodes.Add("tv1SecondChild")        .Nodes.Add("tv1ThirdChild")        .Nodes.Add("tv1FourthChild")        .Expand()    End With    ParentNode2 = TreeView2.Nodes.Add("tv2")    With ParentNode2        .Nodes.Add("tv2FirstChild")        .Nodes.Add("tv2SecondChild")        .Expand()    End WithEnd Sub					
  5. Adicione o seguinte manipulador de método para manipular o evento ItemDrag de TreeView1 ou TreeView2 , dependendo da direção da operação de arrastar. Esse código inicia uma operação de movimentação no item que está sendo arrastado.
        Public Sub TreeView_ItemDrag(ByVal sender As Object, _                                  ByVal e As ItemDragEventArgs) _                                  Handles TreeView1.ItemDrag, TreeView2.ItemDrag        DoDragDrop(e.Item, DragDropEffects.Move)    End Sub					
  6. Adicione o seguinte manipulador de método para manipular o evento DragEnter de TreeView1 ou TreeView2 , dependendo da direção da operação arrastar:
        Public Sub TreeView_DragEnter(ByVal sender As Object, _                               ByVal e As DragEventArgs) _                               Handles TreeView2.DragEnter, TreeView1.DragEnter        e.Effect = DragDropEffects.Move    End Sub					
  7. Adicione o seguinte método à classe Form1 para que ela segue imediatamente o método que você adicionou na etapa anterior:
    Public Sub TreeView_DragDrop(ByVal sender As Object, _                              ByVal e As DragEventArgs) _                              Handles TreeView2.DragDrop, TreeView1.DragDrop        Dim NewNode As TreeNode        If e.Data.GetDataPresent("System.Windows.Forms.TreeNode", False) Then            Dim pt As Point            Dim DestinationNode As TreeNode            pt = CType(sender, TreeView).PointToClient(New Point(e.X, e.Y))            DestinationNode = CType(sender, TreeView).GetNodeAt(pt)            NewNode = CType(e.Data.GetData("System.Windows.Forms.TreeNode"), _                                            TreeNode)            If Not DestinationNode.TreeView Is NewNode.TreeView Then                DestinationNode.Nodes.Add(NewNode.Clone)                DestinationNode.Expand()                'Remove original node                NewNode.Remove()            End If        End IfEnd Sub					
  8. Criar e executar o projeto. Arraste nós de um controle TreeView para a outra. Observe que o nó é removido do controle de origem e é adicionado como um nó filho no controle destino.
back to the top

Anotações

O exemplo que acompanha este artigo destina fins de demonstração somente; assim, que o exemplo ilustra como usar o controle TreeView em um cenário simplificado somente. Para manter a amostra pequena, vários cenários não são levados em consideração. Por exemplo, o código não permite executar uma operação de arrastar-e-soltar conosco no mesmo controle TreeView .

O código também não manipula o cenário no qual um usuário não descartar o objeto em um nó específico no destino controle TreeView . Para lidar com esse cenário, verifique se Nó_de_destino é nulo; se for, você pode adicionar o objeto que está sendo arrastado para a raiz do controle TreeView e assim por diante.

back to the top
Referências
Para obter mais informações, consulte os tópicos a seguir na documentação do .NET Framework Software Development Kit (SDK):

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 307967 - Última Revisão: 05/13/2007 05:10:43 - Revisão: 4.5

Microsoft Visual Basic .NET 2002 Standard Edition, Microsoft Visual Basic .NET 2003 Standard Edition, Microsoft Visual Basic 2005

  • kbmt kbvs2005applies kbvs2005swept kbhowtomaster KB307967 KbMtpt
Comentários