Перетащите пользовательский контроль в vb.net - PullRequest
2 голосов
/ 19 марта 2011

У меня, как и должно быть, очень простая проблема, но теперь я использовал 5 часов безрезультатно. У меня есть usercontrol, UserControl1, который я хочу перетащить в мою форму, Form1.

Вот и все. Это должно быть просто, но я часами гуглил безрезультатно. У кого-нибудь есть пример кода, чтобы это исправить?

Ответы [ 2 ]

0 голосов
/ 21 марта 2011

Вот код, который я использовал, чтобы он заработал. Теперь у меня есть форма Form1 и пользовательский контроль Usercontrol1. Чтобы перетащить пользовательский элемент управления, я вставил панель в верхнюю часть пользовательского элемента управления, и только если пользователь нажал на панель (панель1), элемент управления должен перемещаться - как обычные формы окон.

Public Class UserControl1
Shared mypositionX As Integer
Shared mypositionY As Integer
Shared mBlnFormDragging As Boolean

Shared drawBeginX As Integer
Shared drawBeginY As Integer

Shared drawing As Boolean

Private Sub Panel1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Panel1.MouseMove
    If mBlnFormDragging = True Then
        Dim position As Point = Form1.PointToClient(MousePosition)
        Me.Location = New Point(position)
    End If
End Sub

Private Sub Panel1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Panel1.MouseUp
    '        Dim dd1 As DragDropEffects = DoDragDrop(ParentForm, DragDropEffects.Move)
    mBlnFormDragging = False
    Dim position As Point = Form1.PointToClient(MousePosition)
    Location = New Point(position)
End Sub

Public Sub Panel1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Panel1.MouseDown
    'Dim dd1 As DragDropEffects = DoDragDrop(ParentForm, DragDropEffects.Move)
    mBlnFormDragging = True
End Sub
0 голосов
/ 19 марта 2011

Я не знаю, что такое пользовательский элемент управления (я все еще учусь), но я нашел кое-что, что могло бы помочь.В этом коде добавьте два элемента управления TextBox в форму и установите для свойства AllowDrop второго элемента управления TextBox значение True.Затем используйте этот код для включения перетаскивания

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

Я надеюсь, что вы можете использовать это для контроля пользователя.Удачи и комментариев!

...