Ahora les mostraré lo sencillo que resulta crear la funcionalidad de arrastrar un archivo de imagen desde cualquier carpeta a un control PictureBox de nuestra aplicación, para lo cual necesitaremos agregar un control PictureBox a un formulario, luego ajustar las siguientes propiedades de la siguiente forma:
BorderStyle = FixedSingle
SizeMode = StretchImage
y escribir el siguiente código.
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Habilitamos el arrastre para el control PictureBox2 (No lo tiene permitido en tiempo de diseño)
PictureBox2.AllowDrop = True
End Sub
Private Sub PictureBox2_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles PictureBox2.DragEnter
'DataFormats.FileDrop nos devuelve el array de rutas de archivos
If e.Data.GetDataPresent(DataFormats.FileDrop) Then
'Los archivos son externos a nuestra aplicación por lo que de indicaremos All ya que dará lo mismo.
e.Effect = DragDropEffects.All
End If
End Sub
Private Sub PictureBox2_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles PictureBox2.DragDrop
If e.Data.GetDataPresent(DataFormats.FileDrop) Then
Dim strRutaArchivoImagen As String
Dim i As Integer
'Asignamos la primera posición del array de ruta de archivos a la variable de tipo string
'declarada anteriormente ya que en este caso sólo mostraremos una imagen en el control.
strRutaArchivoImagen = e.Data.GetData(DataFormats.FileDrop)(0)
'La cargamos al control
PictureBox2.Load(strRutaArchivoImagen)
End If
End Sub
Y esto es todo =)
Muy interesante, gracias ;)
ResponderEliminarMuchas gracias por la información.
ResponderEliminarCon unos pocos cambios he conseguido que me funcione para cargar archivos de texto .TXT arrastrándolos hasta el TextBox.
Adjunto el código:
Imports System.IO
Imports System.Text
Public Class Form1
Private Sub TextBox1_DragDrop(sender As Object, e As System.Windows.Forms.DragEventArgs) Handles TextBox1.DragDrop
If e.Data.GetDataPresent(DataFormats.FileDrop) Then
Dim strRutaArchivoTexto As String
Dim i As Integer
'Asignamos la primera posición del array de ruta de archivos a la variable de tipo string
'declarada anteriormente ya que en este caso sólo mostraremos una imagen en el control.
strRutaArchivoTexto = e.Data.GetData(DataFormats.FileDrop)(0)
If LCase(Mid(strRutaArchivoTexto, Len(strRutaArchivoTexto) - 4 + 1)) = ".txt" Then
Dim sr As New System.IO.StreamReader(strRutaArchivoTexto, Encoding.Default)
TextBox1.AppendText(sr.ReadToEnd)
'MessageBox.Show(sr.ReadToEnd)
sr.Close()
End If
End If
End Sub
Private Sub TextBox1_DragEnter(sender As Object, e As System.Windows.Forms.DragEventArgs) Handles TextBox1.DragEnter
'DataFormats.FileDrop nos devuelve el array de rutas de archivos
If e.Data.GetDataPresent(DataFormats.FileDrop) Then
'Los archivos son externos a nuestra aplicación por lo que de indicaremos All ya que dará lo mismo.
e.Effect = DragDropEffects.All
End If
End Sub
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
TextBox1.AllowDrop = True
End Sub
End Class