Artigo: 307966 - Última revisão: terça-feira, 22 de Janeiro de 2008 - Revisão: 2.4

Como fornecer a funcionalidade de arrastar e largar ficheiros numa aplicação do Visual C#

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.

Nesta página

Expandir tudo | Reduzir tudo

Sumário

O procedimento passo-a-passo descrito neste artigo demonstra como fornecer a funcionalidade de arrastar e largar ficheiros numa aplicação do Visual C#. É utilizado um controlo ListBox como destino do procedimento de arrastar e largar ficheiros.

Requisitos

Esta lista descreve o hardware, software, infra-estrutura de rede e Service Packs recomendados de que necessita:
  • Visual C# .NET ou Visual C# 2005
Este artigo pressupõe que está familiarizado com os seguintes tópicos:

  • Controlo ListBox do Windows Forms
  • Processamento de eventos do Windows Forms

Passos para Criar o Código de Exemplo

O controlo ListBox fornece dois eventos de arrastar e largar que é necessário processar: DragEnter e DragDrop. O evento DragEnter ocorre quando arrasta um objecto dentro dos limites do controlo e é utilizado para determinar se o objecto que está a ser arrastado é o que pretende permitir que seja largado no controlo. O utilizador processa este evento nos casos em que um ou mais ficheiros são arrastados para o controlo. Isto permite que seja apresentado o ícone adequado quando o objecto é arrastado sobre o controlo, dependendo do objecto que está a ser arrastado. O evento DragDrop ocorre quando o objecto que está a ser arrastado for libertado no controlo. O utilizador processa este evento para obter o objecto. O objecto Data é utilizado para obter os dados.

O método GetData de objecto Data devolve uma matriz de cadeias que contém os nomes de caminhos completos dos ficheiros que foram arrastados para o controlo ListBox. Pode utilizar estas informações de caminho de ficheiro para efectuar as operações necessárias nos ficheiros. Por exemplo, pode utilizar classes no espaço de nomes System.IO para abrir e ler os ficheiros, mover os ficheiros ou copiar os ficheiros para uma nova localização. Neste exemplo, apenas é adicionado o caminho completo dos ficheiros arrastados para o controlo ListBox.

Para fornecer a funcionalidade de arrastar e largar ficheiros numa aplicação do Visual C#, siga estes passos:
  1. Crie uma nova aplicação do Windows Forms no Visual C# .NET ou no Visual C# 2005. O Form1 é criado por predefinição.

    Nota: o código deve ser alterado no Visual Studio 2005. Quando cria um projecto do Windows Forms, o Visual C# adiciona um formulário ao projecto por predefinição. Este formulário é denominado Form1. Os dois ficheiros que representam o formulário são denominados Form1.cs e Form1.designer.cs. Tem de escrever o código no Form1.cs. O ficheiro Designer.cs é onde o Windows Forms Designer escreve o código que implementa todas as acções efectuadas através da adição de controlos. Para mais informações sobre o Windows Forms Designer no Visual C# 2005, visite o seguinte Web site da Microsoft:
    http://msdn2.microsoft.com/en-us/library/ms173077.aspx (http://msdn2.microsoft.com/en-us/library/ms173077.aspx)
  2. Utilize a caixa de ferramentas para adicionar um controlo ListBox ao Form1.
  3. Na janela Propriedades, altere a propriedade AllowDrop do controlo ListBox para True para permitir que os objectos sejam arrastados para o controlo.
  4. No Solution Explorer, clique com o botão direito do rato em Form1 e clique em View Code.
  5. Para processar o evento DragEnter, adicione o seguinte método a seguir à secção de código gerada pelo Windows Form Designer à classe Form1:
    private void listBox1_DragEnter(object sender, System.Windows.Forms.DragEventArgs e)
    {
    	if(e.Data.GetDataPresent(DataFormats.FileDrop))
    		e.Effect = DragDropEffects.All;
    	else
    		e.Effect = DragDropEffects.None;
    }
    					
  6. Para processar o evento DragDrop, adicione o seguinte método à classe Form1 imediatamente a seguir ao método adicionado no passo 5:
    private void listBox1_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
    {
    	string[] s = (string[]) e.Data.GetData(DataFormats.FileDrop, false);
    	int i;
    	for(i = 0; i < s.Length; i++)
    		listBox1.Items.Add(s[i]);
    }
    					
  7. Para associar os dois processadores de eventos aos eventos de controlos, adicione o seguinte código ao método InitializeComponent de Form1. Certifique-se de que adiciona o código depois de ListBox1 ter sido instanciado:
    this.listBox1.DragDrop += new
               System.Windows.Forms.DragEventHandler(this.listBox1_DragDrop);
    this.listBox1.DragEnter += new
               System.Windows.Forms.DragEventHandler(this.listBox1_DragEnter);
    
    					
  8. Crie e execute o projecto.
  9. Arraste um ou mais ficheiros a partir do ambiente de trabalho ou outra pasta para o controlo ListBox. Repare que o caminho completo dos ficheiros é adicionado ao controlo ListBox.

Referências

Para mais informações, consulte os seguintes Web sites da MSDN (Microsoft Developer Network):
Control.DragEnter Event
http://msdn2.microsoft.com/en-us/library/system.windows.forms.control.dragenter(vs.71).aspx (http://msdn2.microsoft.com/en-us/library/system.windows.forms.control.dragenter(vs.71).aspx)

Control.DragEnter Event
http://msdn2.microsoft.com/en-us/library/system.windows.forms.control.dragdrop(vs.71).aspx (http://msdn2.microsoft.com/en-us/library/system.windows.forms.control.dragdrop(vs.71).aspx)

A informação contida neste artigo aplica-se a:
  • Microsoft Visual C# 2005
  • Microsoft Visual C# .NET 2002 Standard Edition
Palavras-chave: 
kbhowtomaster kbsample KB307966