В настоящее время я пытаюсь упростить инструмент, который мы используем на работе. Для этого я хотел бы использовать метод перетаскивания. Инструмент в основном похож на строительство башни с использованием трех различных блоков. В верхней части находятся три изображения различных блоков ниже - панель раскладки потока. Цель состоит в том, чтобы перетащить требуемый порядок блоков в панель раскладки потока.vb.net Использование операции перетаскивания с использованием изображений
Вот краткое изображение, которое будет представлять начальную позицию. (Просто чтобы быть ясным.)
Это для меня сложная часть. Я использовал метод перетаскивания для удаления значений из одного текстового поля в другой. Теперь мне нужно скопировать объект изображения и добавить его в панель раскладки потока.
Это метод, который я следовал перетаскивать значения
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
Теперь для следующего шага я должен сделать то же самое для изображений, вот моя попытка:
Public Class Form2
Private MouseIsDown As Boolean = False
Private Sub PictureBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) _
Handles PictureBox1.MouseDown
' Set a flag to show that the mouse is down.
MouseIsDown = True
End Sub
Private Sub PictureBox1_MouseMove(ByVal sender As Object, ByVal e As _
System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove
If MouseIsDown Then
' Initiate dragging.
PictureBox1.DoDragDrop(PictureBox1, DragDropEffects.Copy)
End If
MouseIsDown = False
End Sub
Private Sub FlowLayoutPanel1_DragEnter(ByVal sender As Object, ByVal e As _
System.Windows.Forms.DragEventArgs) Handles FlowLayoutPanel1.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 FlowLayoutPanel1_DragDrop(ByVal sender As Object, ByVal e As _
System.Windows.Forms.DragEventArgs) Handles FlowLayoutPanel1.DragDrop
' Paste the text.
FlowLayoutPanel1.Text = e.Data.GetData(DataFormats.Bitmap)
End Sub
End Class
Но если Я делаю это, и перетаскиваю элемент picturebox1 на панель, я получаю только символ can not drop. Так вот, где я немного застрял. Может кто-нибудь, пожалуйста, предоставит мне некоторую информацию, как это сделать? Или дать мне несколько указателей?
Ваш DoDragDrop инициирует с помощью 'Control' как данные для перетаскивания (что соответствует типу вопроса), но вы тестируете' DataFormats.Text' в dragenter. – Plutonix