Jump to content

Drag/Drop [Resolvido]


PJM
 Share

Recommended Posts

Pessoal tenho a seguinte dúvida, como usar o drag/drop no VB 2008 .net?

Estou a tentar arrastar um ficheiro para uma caixa de texto, com a finalidade de mostrar a localização do ficheiro, por exemplo: "C:\a.txt".

No VB 6 era só activar a opção drag/drop para automatic (salvo a erro), agora no VB 2008 .net não faço a mínima ideia onde é. Encontrei uma propriedade AllowDrop e activei a, mas mesmo assim não me deixa arrastar lá o ficheiro.

Cumprimentos.

Link to comment
Share on other sites

Sim deu, muito obrigado.

Agora só não percebi nada do código, será que alguém mo podia explicar se faz favor?

É que eu só me contento quando tenho as coisas feitas por mim, isto é, entendidas e não copiadas.

Aqui está o código:

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

    If e.Data.GetDataPresent(DataFormats.FileDrop) Then
        e.Effect = DragDropEffects.All
    End If
End Sub

Private Sub ListBox1_DragDrop( _
    ByVal sender As Object, ByVal e As DragEventArgs) _
    Handles ListBox1.DragDrop
    If e.Data.GetDataPresent(DataFormats.FileDrop) Then
        Dim MyFiles() As String
        Dim i As Integer

        'Isto irá adicionar o tamanho de ficheiros que foram arrastados, armazenando os valores num array
        MyFiles = e.Data.GetData(DataFormats.FileDrop)
        ' Ciclo for em que irá adicionar todos os ficheiros arrastados pelo utilizador
        For i = 0 To MyFiles.Length - 1
            ListBox1.Items.Add(MyFiles(i))
        Next
    End If
End Sub

P.s.-> Comentei o que sabia

Cumprimentos e obrigado

Link to comment
Share on other sites

'Despoletado quando o drag entra na listbox
Private Sub ListBox1_DragEnter( _
    ByVal sender As Object, ByVal e As DragEventArgs) _
    Handles ListBox1.DragEnter
´detecta se o tipo de dados que estas a arrastar e do tipo file
    If e.Data.GetDataPresent(DataFormats.FileDrop) Then
'Define o efeito para o cursor
        e.Effect = DragDropEffects.All
    End If
End Sub
´Codigo quando largas
Private Sub ListBox1_DragDrop( _
    ByVal sender As Object, ByVal e As DragEventArgs) _
    Handles ListBox1.DragDrop
'testa mais uma vez se o que estás a fazer é arrastar ficheiro
    If e.Data.GetDataPresent(DataFormats.FileDrop) Then
        Dim MyFiles() As String
        Dim i As Integer

        'Isto irá adicionar o tamanho de ficheiros que foram arrastados, armazenando os valores num array
[b]'Isto irá adicionar as path's dos ficheiros  num array[/b]
'vai fazer um ciclo porque pode estar a arrastar mais que um
        MyFiles = e.Data.GetData(DataFormats.FileDrop)
        ' Ciclo for em que irá adicionar todos os ficheiros arrastados pelo utilizador
        For i = 0 To MyFiles.Length - 1
'Adiciona à lista
            ListBox1.Items.Add(MyFiles(i))
        Next
    End If
End Sub

espero que tenhas ficado esclarecido ;-)

Quando te pedirem peixe.... ensina-os a Pescar!!Hum..lálálálá!!

Link to comment
Share on other sites

Sim percebi, muito obrigado.

Porém tenho 2 dúvidas.

1º-> Como é que posso fazer isso só para um ficheiro? Tentei remover o array e continuar com o array mas meter logo com o valor 0. Por Exemplo: Myfiles(0) e não deu em nada.

2º-> 'Define o efeito para o cursor ? Que efeito? Não percebi bem esta linha de código.

Desculpa lá tantas perguntas, mas é que eu sou mesmo assim, gosto de saber o que estou fazer  🙂

Cumprimentos.

Link to comment
Share on other sites

Respondendo as tuas questoes...

para a primeira:

    Private Sub ListBox3_DragDrop(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles ListBox3.DragDrop
        If e.Data.GetDataPresent(DataFormats.FileDrop) Then
            Dim MyFiles() As String
            Dim i As Integer
            ' Assign the files to an array.
            MyFiles = e.Data.GetData(DataFormats.FileDrop)
            MsgBox(MyFiles(0).ToString)
            ' Loop through the array and add the files to the list.
            'For i = 0 To MyFiles.Length - 1
            'ListBox3.Items.Add(MyFiles(i))
            ' Next
        End If
    End Sub

A única coisa que podes fazer é eliminar o ciclo pelo array de ficheiros...

Podes aceder ao indice especifico...eu por exemplo pu-lo a dar uma msgbox com o nome do ficheiro.

Quanto à segunda:

Define o efeito para o ponteiro do rato (falhei aqui).

Podes ter 4 ou 5 efeitos diferentes... mover, copiar, rrastar, linkar...e por ai fora...depedendo do que faz o drop

Quando te pedirem peixe.... ensina-os a Pescar!!Hum..lálálálá!!

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.