vb.net, как обрабатывать текст, перетаскиваемый на кнопку, чтобы открыть новую форму с перетаскиваемым текстом, непосредственно скопированным в richtextbox в новой форме? - PullRequest
0 голосов
/ 01 июля 2010

Я хочу добиться следующего:

Пользователь перетаскивает текст из любого открытого окна, не связанного с моим приложением (например, Firefox или Word), на button1 на форме form1 в моем приложении.когда он / она делает это, открывается новая форма (называемая form2, которая содержит richtextbox), и перетаскиваемый текст напрямую копируется (или вставляется) в richtextbox новой формы.button1 имеет значение для dropdrop, равное true.Кроме того, я не знаю, как действовать.

Я пытался:

e.effects = DragDropEffects.Copy

Но, похоже, этого недостаточно.Не могли бы вы помочь, пожалуйста?

Спасибо

Ответы [ 2 ]

0 голосов
/ 02 июля 2010

Я понял это. Я делюсь, чтобы другие могли извлечь выгоду.

Сначала я объявил глобальную переменную в одном из модулей:

Public draggedText As String = ""

Во-вторых, я обработал событие перетаскивания на кнопке следующим образом:

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 я добавил следующее:

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

Вот и все. Не так сложно, как я думал. Также вы можете добавить код для события dragEnter, упомянутого в предыдущем ответе, чтобы изменить внешний вид курсора.

Надеюсь, это поможет.

0 голосов
/ 01 июля 2010

Изучение Drag and Drop будет первым шагом. http://www.vb -helper.com / howto_net_drag_drop.html -или- http://msdn.microsoft.com/en-us/library/aa289508%28VS.71%29.aspx.

По сути, вам нужно включить перетаскивание для цели, обработать события перетаскивания и затем выполнить желаемое действие.

Из MSDN относительно перетаскивания текста:

<code>
Private MouseIsDown As Boolean = False</p>

<p>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</p>

<p>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</p>

<p>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</p>

<p>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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...