Como adicionar funcionalidade de arrastar-e-soltar TreeView em um aplicativo Visual translation from VPE for Csharp

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: 307968
Para uma versão deste artigo do Microsoft Visual Basic. NET, consulte 307967.
Para uma versão deste artigo do Microsoft Visual C++. NET, consulte 815675.
Sumário
Este artigo passo a passo descreve como executar uma operação de arrastar-e-soltar conosco de árvore entre dois controles TreeView em um aplicativo Visual translation from VPE for Csharp.

Requisitos

A lista a seguir descreve o hardware recomendado, software, infra-estrutura de rede e service packs que você precisa:
  • Translation from VPE for Csharp Visual
Este artigo pressupõe que você esteja familiarizado com os seguintes tópicos:
  • Controle TreeView do Windows Forms
  • Tratamento de evento do Windows Forms

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 nos limites de destino controle TreeView . O evento DragEnter permite 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.

Etapas para criar o exemplo

  1. Crie um novo Windows Application no translation from VPE for Csharp Visual. Por padrão, um formulário que é denominado Form1 é criado.
  2. Use a caixa de ferramentas para adicionar dois controles TreeView para Form1. Por padrão, TreeView1 e TreeView2 são criados.
  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 de evento de carga do Form1. Add the following code to populate the two TreeView controls with TreeNode objects and to define the event handlers:
    private void Form1_Load(object sender, System.EventArgs e)		{			TreeNode ParentNode1;			TreeNode ParentNode2;			ParentNode1 = treeView1.Nodes.Add("tv1");			ParentNode1.Nodes.Add("tv1FirstChild");			ParentNode1.Nodes.Add("tv1SecondChild");			ParentNode1.Nodes.Add("tv1ThirdChild");			ParentNode1.Nodes.Add("tv1FourthChild");			ParentNode1.Expand();			ParentNode2 = treeView2.Nodes.Add("tv2");			ParentNode2.Nodes.Add("tv2FirstChild");			ParentNode2.Nodes.Add("tv2SecondChild");			ParentNode2.Expand();			this.treeView1.ItemDrag += new System.Windows.Forms.ItemDragEventHandler(this.treeView_ItemDrag);			this.treeView2.ItemDrag += new System.Windows.Forms.ItemDragEventHandler(this.treeView_ItemDrag);			this.treeView1.DragEnter += new System.Windows.Forms.DragEventHandler(this.treeView_DragEnter);			this.treeView2.DragEnter += new System.Windows.Forms.DragEventHandler(this.treeView_DragEnter);			this.treeView1.DragDrop += new System.Windows.Forms.DragEventHandler(this.treeView_DragDrop);			this.treeView2.DragDrop += new System.Windows.Forms.DragEventHandler(this.treeView_DragDrop);			}
  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.
    private void treeView_ItemDrag(object sender,			System.Windows.Forms.ItemDragEventArgs e)		{			DoDragDrop(e.Item, DragDropEffects.Move);		}
  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:
    private void treeView_DragEnter(object sender,			System.Windows.Forms.DragEventArgs e)		{			e.Effect = DragDropEffects.Move;		}
  7. Adicione o seguinte método à classe Form1 para que ela segue imediatamente o método que você adicionou na etapa anterior:
    private void treeView_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)		{			TreeNode NewNode;			if(e.Data.GetDataPresent("System.Windows.Forms.TreeNode", false))			{				Point pt = ((TreeView)sender).PointToClient(new Point(e.X, e.Y));				TreeNode DestinationNode = ((TreeView)sender).GetNodeAt(pt);				NewNode = (TreeNode)e.Data.GetData("System.Windows.Forms.TreeNode");				if(DestinationNode.TreeView != NewNode.TreeView)				{     					DestinationNode.Nodes.Add((TreeNode) NewNode.Clone());					DestinationNode.Expand();					//Remove Original Node					NewNode.Remove();				}			}		}
  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.

Anotações

O exemplo que acompanha este artigo destina-se apenas a fins de demonstração. Portanto, o exemplo apenas ilustra como usar o controle TreeView em um cenário simplificado. Para manter a amostra pequena, vários cenários não são considerados. 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 manipular esse cenário, teste se Nó_de_destino é nulo; se ele é, você pode adicionar o objeto que está sendo arrastado para a raiz do controle TreeView e assim por diante.
Referências
Para obter mais informações, consulte os seguintes sites da Microsoft Developer Network (MSDN):

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 307968 - Última Revisão: 07/21/2008 19:03:43 - Revisão: 4.0

Microsoft Visual C# 2008 Express Edition, Microsoft Visual C# 2005, Microsoft Visual C# .NET 2002 Standard Edition

  • kbmt kbsweptvs2008 kbhowtomaster kbsample KB307968 KbMtpt
Comentários