Fornecer funcionalidade de arrastar e soltar arquivos em um aplicativo Visual C#

Este artigo mostra como fornecer a funcionalidade de arrastar e soltar arquivos em um aplicativo visual C#.

Versão original do produto: Visual C++
Número de KB original: 307966

Resumo

O procedimento passo a passo descrito neste artigo demonstra como fornecer a funcionalidade de arrastar e soltar arquivos em um aplicativo Visual C#. Um ListBox controle é usado como o destino do procedimento de arrastar e soltar arquivos.

Requisitos

Esta lista descreve o hardware, o software, a infraestrutura de rede e os pacotes de serviço recomendados que você precisa: Visual C#.

Este artigo pressupõe que você esteja familiarizado com os seguintes tópicos:

  • Windows Forms ListBox control
  • Windows Forms event handling

Etapas para criar o exemplo

O controle ListBox fornece dois eventos de arrastar e soltar que você precisa manipular: DragEnter e DragDrop. O DragEnter evento ocorre quando você arrasta um objeto dentro dos limites do controle e é usado para determinar se o objeto que está sendo arrastado é aquele que você deseja permitir que seja descartado no controle. Você manipula esse evento para casos em que um arquivo ou arquivos são arrastados para o controle. Isso permite que o ícone apropriado seja exibido quando o objeto é arrastado pelo controle, dependendo do objeto que está sendo arrastado. O DragDrop evento ocorre quando o objeto que está sendo arrastado foi liberado no controle. Você manipula esse evento para recuperar o objeto. O objeto Data é usado para recuperar os dados.

O método do GetData objeto Data retorna uma matriz de cadeias de caracteres que contêm os nomes de caminho completos dos arquivos que foram arrastados para o ListBox controle. Você pode usar essas informações de caminho de arquivo para executar todas as operações necessárias nos arquivos. Por exemplo, você pode usar classes no System.IO namespace para abrir e ler os arquivos, mover os arquivos ou copiar os arquivos para um novo local. Neste exemplo, basta adicionar o caminho completo aos arquivos que são arrastados para o ListBox controle.

Para fornecer a funcionalidade de arrastar e soltar arquivos em um aplicativo Visual C#, siga estas etapas:

  1. Crie um novo aplicativo Windows Forms no Visual C# .NET ou Visual C# 2005. O Form1 é criado por padrão.

  2. Use a caixa de ferramentas para adicionar um ListBox controle ao Form1.

  3. Na janela Propriedades , altere a AllowDrop propriedade do ListBox controle para True para permitir que objetos sejam arrastados para o controle.

  4. Em Gerenciador de Soluções, clique com o botão direito do mouse em Formulário1 e clique em Exibir Código.

  5. Para manipular o DragEnter evento, adicione o seguinte método abaixo da seção de código que o Designer do Windows Form gera na Form1 classe:

    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 manipular o DragDrop evento, adicione o seguinte método à Form1 classe imediatamente seguindo o método que você adicionou na etapa 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 manipuladores de eventos aos eventos de controle, adicione o seguinte código no Form1 construtor após a chamada a InitializeComponent:

    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 projeto.

  9. Arraste um ou mais arquivos da área de trabalho ou de outra pasta para o controle ListBox. O caminho completo dos arquivos é adicionado ao ListBox controle.

Referências

Para obter mais informações, confira os seguintes sites da Web: