• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Cybernavigator

[VB.NET 2k5] Drag e Drop de ficheiro externo

2 mensagens neste tópico

Boas, este tutorial consiste em fazer drag and drop de um ficheiro num objecto do vb.net.

A mim deu-me muito jeito, não sei se existe alguma coisa deste género aqui no fórum.

Não vou explicar como iniciar o projecto, se há dúvidas nisso devem consultar outros tutoriais primeiro.

Aqui vamos, iniciem um projecto, dêem o nome de drag-drop.

Vamos inserir 4 elementos:

  • uma labelbox com o nome NomeImagem
  • uma picturebox com o nome ImagemDrag
  • uma textbox multiline com o nome TextoDoFicheiro
  • uma labelbox com o nome NomeDoFicheiro

Disponham da seguinte forma (se desejarem, não é importante):

DD1.PNG

Ok, carreguem duas vezes na form e adicionem isto ao código.

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ImagemDrag.AllowDrop = True
        TextoDoFicheiro.AllowDrop = True
    End Sub

Ok feito isto,voltem ao design do form carreguem duas vezes na imagem e no canto superior direito onde diz Click, desçam essa combobox e seleccionem DragEnter

esta parte pode parecer muito complicada mas não é.

O que nós queremos é mostrar aquele icon a dizer que dá para dropar um ficheiro naquela caixa, mas temos de confirmar a extenção do ficheiro.

    Private Sub ImagemDrag_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles ImagemDrag.DragEnter
        Dim ExtencaoDoFicheiro As String = System.IO.Path.GetExtension(CType(e.Data.GetData(DataFormats.FileDrop), Array).GetValue(0).ToString).ToString.ToLower 'Vai buscar a extenção do ficheiro a ser dropado
        If (e.Data.GetDataPresent(DataFormats.FileDrop)) And _
        ExtencaoDoFicheiro = ".jpg" Or _
        ExtencaoDoFicheiro = ".bmp" Or _
        ExtencaoDoFicheiro = ".png" Or _
        ExtencaoDoFicheiro = ".gif" Then 'Vê se está algum ficheiro a ser arrastado e vê se a extensão se confirma.
            e.Effect = DragDropEffects.Copy
        End If
    End Sub

Ok, ele já mostra o icon de permissão, mas ainda não faz nada quando se larga o objecto, para isso carregamos outra vez naquela combobox que tinha o Click e seleccionamos DragDrop e adicionamos o seguinte código.

    Private Sub ImagemDrag_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles ImagemDrag.DragDrop
        Dim NomeDaImagem As String = System.IO.Path.GetFileName(CType(e.Data.GetData(DataFormats.FileDrop), Array).GetValue(0).ToString)
        Try
            ImagemDrag.Image = Image.FromFile(CType(e.Data.GetData(DataFormats.FileDrop), Array).GetValue(0).ToString)
            NomeImagem.Text = NomeDaImagem
        Catch ex As Exception
            MessageBox.Show("Erro ao mostrar a imagem, o ficheiro " & NomeDaImagem & " pode estar corrompido!", "Erro", MessageBoxButtons.OK)
        End Try
    End Sub

Óptimo, ele já mostra a imagem arrastada, agora falta a caixa de texto.

Vamos voltar ao design da form

e carregar duas vezes na textbox, como há um bocado vamos até ao DragEnter da textbox, sintam-se livres de copiar o código que está na DragEnter da imagem e mudar as extenções.

    Private Sub TextoDoFicheiro_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles TextoDoFicheiro.DragEnter
        Dim ExtencaoDoFicheiro As String = System.IO.Path.GetExtension(CType(e.Data.GetData(DataFormats.FileDrop), Array).GetValue(0).ToString).ToString.ToLower 'Vai buscar a extenção do ficheiro a ser dropado
        If (e.Data.GetDataPresent(DataFormats.FileDrop)) And _
        ExtencaoDoFicheiro = ".txt" Or _
        ExtencaoDoFicheiro = ".xml" Or _
        ExtencaoDoFicheiro = ".php" Or _
        ExtencaoDoFicheiro = ".css" Then 'Vê se está algum ficheiro a ser arrastado e vê se a extensão se confirma.
            e.Effect = DragDropEffects.Copy
        End If
    End Sub

Bom, vamos então criar o código para abrir o ficheiro arrastado, vamos á parte do DragDrop da textbox e adicionamos este código

    Private Sub TextoDoFicheiro_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles TextoDoFicheiro.DragDrop
        Dim NomeFicheiro As String = System.IO.Path.GetFileName(CType(e.Data.GetData(DataFormats.FileDrop), Array).GetValue(0).ToString)
        Try
            Dim LocalDoFicheiro As String = CType(e.Data.GetData(DataFormats.FileDrop), Array).GetValue(0).ToString
            TextoDoFicheiro.Text = My.Computer.FileSystem.ReadAllText(LocalDoFicheiro)
            NomeDoFicheiro.Text = NomeFicheiro
        Catch ex As Exception
            MessageBox.Show("Erro ao mostrar o texto, o ficheiro " & NomeFicheiro & " pode estar corrompido!", "Erro", MessageBoxButtons.OK)
        End Try
    End Sub

Ok, podemos correr o programa e ver o resultado

DD2.PNG

yay... Espero que tenham gostado.

Cumpz.

Deixo o projecto aqui pelo sim pelo não. ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora