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