Arrastando e soltando arquivos em um ListBox.


Lembra como fazíamos uma operação de arrastar e soltar no VB6 ???

Se você não lembra dê uma olhada no artigo - Arrastar e Soltar , é só começar .

Mas como estamos em tempos de VB.NET , como podemos fazer isto no VB.NET ? 

Nesta dica eu mostro como fazer isso no VB .NET.

Inicie um novo projeto no Visual Studio.NET com as seguintes características (sinta-se a vontade para alterar a seu gosto.)

  1. Project Types : Visual Basic Projects
  2. Templates : Windows Application
  3. Name : ArrastarSoltar
  4. Location : c:\vbnet \ArrastarSoltar

b- No formulário padrão - form1.vb - inclua um controle ListBox e um controle Label conforme a figura abaixo :

O controle ListBox possui dois eventos que permitem a operação arrastar e soltar , são eles : DragEnter e DragDrop.

DragEnter - ocorre quando você arrasta um objeto dentro dos limites de um controle e é usado para determinar se o objeto que esta sendo arrastado tem a permissão para isto. Um ícone indicando a ocorrência deste evento.

DragDrop - ocorre quando um objeto que esta sendo arrastado sobre o controle é solto sobre o mesmo. Usamos este evento para retornar o objeto através do objeto Data.

Data - o método GetData deste objeto retorna um array de strings que contém o caminho completo dos arquivos que estamos arrastando sobre o controle ListBox.

Devemos inserir código nos eventos DragEnter e DragDrop do controle ListBox. Para inserir código estes eventos faça o seguinte :

Private Sub ListBox1_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles ListBox1.DragEnter

If (e.Data.GetDataPresent(DataFormats.FileDrop)) Then

     e.Effect = DragDropEffects.All

Else

     e.Effect = DragDropEffects.None

End If

End Sub

Repita os mesmos passo para o evento DragDrop e insira o seguinte código :

Private Sub ListBox1_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles ListBox1.DragDrop

 

Dim s() As String = e.Data.GetData("FileDrop", False)

Dim i As Integer

For i = 0 To s.Length - 1

    ListBox1.Items.Add(s(i))

Next

End Sub

Agora é só começar a arrastar e soltar...  Até mais !!

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

  Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

Referências:


José Carlos Macoratti