我尝试做的是:
- 为文本框启用文件拖放(拖放的文件应在文本中显示为小图标)。
- 将文本和删除的文件保存到数据库。
- 通过双击它的图标从 TextBox 中打开拖放的文件。
删除文件并在文本中显示图标的部分工作正常,但仍然存在一些问题:
如何将拖放文件的路径信息保存到 TextBox 中的图标表示中。RichTextBox 的自动拖放功能如何做到这一点,但我无法弄清楚如何。(如您所见(在清单 1 中),我尝试将带有两个条目(图像和文件路径)的 DataObject 粘贴到 TextBox,但不会保存路径)。
第二个问题是:我如何读取双击文件的信息(文件路径)?(请参阅清单 2 中可能出现的许多失败尝试之一)我如何解释 SeletedRTF 以获取我想要的信息?
谁能帮我这个?
清单 1:
Private Sub RTB_Kommentar_DragDrop(sender As System.Object, e As System.Windows.Forms.DragEventArgs) Handles RTB_Kommentar.DragDrop
If e.Data.GetDataPresent("FileDrop", True) = True Then
Dim paths As String() = CType(e.Data.GetData("FileDrop"), Object)
If (paths.Count > 0) Then
Dim icon As Icon = System.Drawing.Icon.ExtractAssociatedIcon(paths(0))
Dim image = CreateTextBoxImage(paths(0), icon)
Dim dObj As New DataObject()
dObj.SetImage(image)
dObj.SetText(paths(0))
Clipboard.SetDataObject(dObj)
RTB_Kommentar.Paste()
[...]
e.Effect = DragDropEffects.None
End If
End If
End Sub
清单 2:
Private Sub RTB_Kommentar_DoubleClick(sender As System.Object, e As System.EventArgs) Handles RTB_Kommentar.DoubleClick
Dim dataObject As New DataObject()
dataObject.SetDataObject(RTB_Kommentar.SelectedRtf)
Dim img = dataObject.GetImage()
Dim t = dataObject.GetText()
End Sub