Jose M.
Jose M.

Reputation: 2330

Get image location using a drag and drop

I have a drag and drop event to get images into a picture box. I need to get the image location to string to store on my database. I can get the location if I use a OpenFileDialog, but if I use a drag and drop, I can't seem to get it. Here is my code:

    Private Sub picCategoryImage_DragEnter(sender As Object, e As DragEventArgs) Handles picCategoryImage.DragEnter


    'Procedure to copy the dragged picture from the
    'open window

    If e.Data.GetDataPresent(DataFormats.FileDrop) Then

        'If the file explorer is open, copy the picture to the box
        e.Effect = DragDropEffects.Copy
        picCategoryImage.BorderStyle = BorderStyle.FixedSingle
        TextBox1.Text = picCategoryImage.ImageLocation

    Else

        'otherwise, don't take action
        e.Effect = DragDropEffects.None
        btnDeleteImage.Visible = False

    End If


End Sub

Private Sub picCategoryImage_DragDrop(sender As Object, e As DragEventArgs) Handles picCategoryImage.DragDrop

    'Procedure to select the pictue and drag to picturebox
    Dim picbox As PictureBox = CType(sender, PictureBox)
    Dim files() As String = CType(e.Data.GetData(DataFormats.FileDrop), String())

    If files.Length <> 0 Then

        Try

            picbox.Image = Image.FromFile(files(0))
            btnDeleteImage.Visible = True
            picbox.BorderStyle = BorderStyle.None
            picCategoryImage.BringToFront()
            btnDeleteImage.BringToFront()


        Catch ex As Exception

            MessageBox.Show("Image did not load")

        End Try

    End If

End Sub

Upvotes: 0

Views: 437

Answers (1)

jmcilhinney
jmcilhinney

Reputation: 54417

As suggested by Plutonix, you're already using the file path so you've already got it. That's how Image.FromFile is able to create an Image from a file. If you mean that you need to be able to get the path later then you have two main choices:

  1. Do as you're doing and store the path in a member variable for later use.

  2. Instead of calling Image.FromFile and setting the Image of the PictureBox, just call the Load method of the PictureBox. You can then get the path from the ImageLocation property.

I would actually suggest using option 2 regardless, because it has the added advantage of not locking the file the way your current code does.

Upvotes: 1

Related Questions