使用拖放功能获取图像位置

时间:2015-01-13 01:55:32

标签: vb.net image

我有一个拖放事件将图像放入图片框。我需要将图像位置设置为字符串以存储在我的数据库中。如果我使用OpenFileDialog,我可以得到位置,但如果我使用拖放,我似乎无法得到它。这是我的代码:

    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

1 个答案:

答案 0 :(得分:1)

正如Plutonix所建议的那样,你已经在使用文件路径了,所以你已经得到了它。这就是Image.FromFile能够从文件中创建Image的方式。如果您的意思是您需要能够在以后获得路径,那么您有两个主要选择:

  1. 执行此操作并将路径存储在成员变量中以供日后使用。

  2. 只需调用Image.FromFile的{​​{1}}方法,而不是调用Image并设置PictureBox的{​​{1}}。然后,您可以从Load属性获取路径。

  3. 我实际上建议使用选项2,因为它具有不像当前代码那样锁定文件的额外优势。