我有一个拖放事件将图像放入图片框。我需要将图像位置设置为字符串以存储在我的数据库中。如果我使用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
答案 0 :(得分:1)
正如Plutonix所建议的那样,你已经在使用文件路径了,所以你已经得到了它。这就是Image.FromFile
能够从文件中创建Image
的方式。如果您的意思是您需要能够在以后获得路径,那么您有两个主要选择:
执行此操作并将路径存储在成员变量中以供日后使用。
只需调用Image.FromFile
的{{1}}方法,而不是调用Image
并设置PictureBox
的{{1}}。然后,您可以从Load
属性获取路径。
我实际上建议使用选项2,因为它具有不像当前代码那样锁定文件的额外优势。