vb.net如何处理文本拖动到按钮上打开一个新表单,拖动文本直接复制到新表单上的richtextbox?

时间:2010-07-01 06:37:08

标签: vb.net text drag-and-drop

我想实现以下目标:

用户将文本从任何与我的应用程序无关的打开窗口(例如firefox或word)拖到我应用程序中form1上的button1上。当他/她这样做时,将打开一个新表单(称为包含richtextbox的form2),并将拖动的文本直接复制(或插入)到新表单的richtextbox中。 button1将allowdrop设置为true。除此之外,我不知道如何继续。

我试过了:

e.effects = DragDropEffects.Copy

但似乎还不够。你能帮忙吗?

由于

2 个答案:

答案 0 :(得分:0)

了解拖放是第一步。 http://www.vb-helper.com/howto_net_drag_drop.html - 或 - http://msdn.microsoft.com/en-us/library/aa289508%28VS.71%29.aspx

基本上,您需要为目标启用拖放,处理拖放事件,然后实施所需的操作。

从MSDN关于拖动文本:


Private MouseIsDown As Boolean = False

Private Sub TextBox1_MouseDown(ByVal sender As Object, ByVal e As _ System.Windows.Forms.MouseEventArgs) Handles TextBox1.MouseDown ' Set a flag to show that the mouse is down. MouseIsDown = True End Sub

Private Sub TextBox1_MouseMove(ByVal sender As Object, ByVal e As _ System.Windows.Forms.MouseEventArgs) Handles TextBox1.MouseMove If MouseIsDown Then ' Initiate dragging. TextBox1.DoDragDrop(TextBox1.Text, DragDropEffects.Copy) End If MouseIsDown = False End Sub

Private Sub TextBox2_DragEnter(ByVal sender As Object, ByVal e As _ System.Windows.Forms.DragEventArgs) Handles TextBox2.DragEnter ' Check the format of the data being dropped. If (e.Data.GetDataPresent(DataFormats.Text)) Then ' Display the copy cursor. e.Effect = DragDropEffects.Copy Else ' Display the no-drop cursor. e.Effect = DragDropEffects.None End If End Sub

Private Sub TextBox2_DragDrop(ByVal sender As Object, ByVal e As _ System.Windows.Forms.DragEventArgs) Handles TextBox2.DragDrop ' Paste the text. TextBox2.Text = e.Data.GetData(DataFormats.Text) End Sub

答案 1 :(得分:0)

我明白了。我正在分享,所以其他人可能会受益。

首先,我在其中一个模块中声明了一个全局变量:

Public draggedText As String = ""

其次,我按如下方式处理按钮上的dragdrop事件:

Private Sub button1_DragDrop(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles button1.DragDrop
    draggedText = e.Data.GetData(DataFormats.Text)
    frm_form2.Show()
End Sub

第三,在frm_form2的load事件中,我添加了以下内容:

If draggedText <> "" Then
        richTextBox1.Text = draggedText
        draggedText = ""
End If

就是这样。没有我想象的那么复杂。此外,您可以添加上一个答案中提到的dragEnter事件的代码,以更改光标的外观。

我希望这会有所帮助。