0

我尝试做的是:

  • 为文本框启用文件拖放(拖放的文件应在文本中显示为小图标)。
  • 将文本和删除的文件保存到数据库。
  • 通过双击它的图标从 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
4

1 回答 1

0

如果有人有兴趣,我解决了这个问题。通过以下链接的一些帮助:

ExRichTextBox(在 CodeProject 上)- 增强的 RichTextBox,具有用于图像或文本的插入功能 OutlookDataObject(在 CodeProject 上)- 用于获取从 Outlook 拖动的文件的对象

经过一些沉重的字节推挤后,我现在能够将文件添加到 RichTextBox 并通过双击重新打开它们。

你可以在这里找到一个示例项目

于 2013-06-06T13:01:31.623 回答