PJM Posted June 12, 2008 at 06:36 PM Report Share #190933 Posted June 12, 2008 at 06:36 PM 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 More sharing options...
José Lopes Posted June 12, 2008 at 08:35 PM Report Share #190971 Posted June 12, 2008 at 08:35 PM Tenta espreitar aqui...tem um exemplo do que queres http://www.emoreau.com/Entries/Articles/2004/02/Drag-and-Drop-in-VBNet.aspx Quando te pedirem peixe.... ensina-os a Pescar!!Hum..lálálálá!! Link to comment Share on other sites More sharing options...
PJM Posted June 13, 2008 at 09:11 PM Author Report Share #191138 Posted June 13, 2008 at 09:11 PM 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 More sharing options...
José Lopes Posted June 13, 2008 at 10:14 PM Report Share #191150 Posted June 13, 2008 at 10:14 PM '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 More sharing options...
PJM Posted June 14, 2008 at 11:45 AM Author Report Share #191193 Posted June 14, 2008 at 11:45 AM 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 More sharing options...
José Lopes Posted June 14, 2008 at 01:12 PM Report Share #191196 Posted June 14, 2008 at 01:12 PM 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 More sharing options...
PJM Posted June 14, 2008 at 02:26 PM Author Report Share #191203 Posted June 14, 2008 at 02:26 PM Ahhh ok. Então só me faltava era de facto o .ToString . Obrigado pela ajuda 🙂 Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now