【问题标题】:File Drag&Drop support for a RichTextBox (.Net)对 RichTextBox (.Net) 的文件拖放支持
【发布时间】:2013-05-28 15:46:38
【问题描述】:

我尝试做的是:

  • 为文本框启用文件拖放(拖放的文件应在文本中显示为小图标)。
  • 将文本和删除的文件保存到数据库中。
  • 双击文本框的图标打开拖放的文件。

删除文件并在文本中显示图标的部分工作正常,但仍然存在一些问题:

  • 如何将拖放文件的路径信息保存到文本框中的图标表示。 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

【问题讨论】:

    标签: drag-and-drop outlook richtextbox


    【解决方案1】:

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

    ExRichTextBox (on CodeProject) - Enhanced RichTextBox with insert functions for images or text OutlookDataObject (on CodeProject) - A object to get files that where dragged from Outlook

    经过一些繁重的字节推送后,我现在可以将文件添加到 RichTextBox 并通过双击重新打开它们。

    您可以找到示例项目here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-02
      • 1970-01-01
      • 2010-10-29
      • 2012-06-29
      • 2011-05-14
      • 2010-09-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多