Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
vb.net中的拖放_Vb.net_Drag And Drop_Draggable - Fatal编程技术网

vb.net中的拖放

vb.net中的拖放,vb.net,drag-and-drop,draggable,Vb.net,Drag And Drop,Draggable,我是VisualBasic新手,我根据一篇文章编写了拖放图像的代码 但是我想添加一个if语句来控制拖放,所以如果图片1转到图片框2,它将给出一条消息,说明它位于错误的位置 我的代码: Public Class Form1 Private Source As PictureBox = Nothing Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.

我是VisualBasic新手,我根据一篇文章编写了拖放图像的代码

但是我想添加一个if语句来控制拖放,所以如果图片1转到图片框2,它将给出一条消息,说明它位于错误的位置

我的代码:

Public Class Form1

Private Source As PictureBox = Nothing

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    For Each PB As PictureBox In Me.Controls.OfType(Of PictureBox)()
        PB.AllowDrop = True
        AddHandler PB.MouseMove, AddressOf PBs_MouseMove
        AddHandler PB.DragEnter, AddressOf PBs_DragEnter
        AddHandler PB.DragDrop, AddressOf PBs_DragDrop
        AddHandler PB.DragOver, AddressOf PBs_DragOver
    Next
End Sub

Private Sub PBs_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
    Dim PB As PictureBox = DirectCast(sender, PictureBox)
    If Not IsNothing(PB.Image) AndAlso e.Button = Windows.Forms.MouseButtons.Left Then
        Source = PB
        PB.DoDragDrop(PB.Image, DragDropEffects.Copy Or DragDropEffects.Move)
    End If
End Sub

Private Sub PBs_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs)
    If e.Data.GetDataPresent(DataFormats.Bitmap) Then
        If My.Computer.Keyboard.CtrlKeyDown Then
            e.Effect = DragDropEffects.Copy
        Else
            e.Effect = DragDropEffects.Move
        End If
    Else
        e.Effect = DragDropEffects.None
    End If
End Sub

Private Sub PBs_DragOver(ByVal sender As Object, ByVal e As DragEventArgs)
    If e.Data.GetDataPresent(DataFormats.Bitmap) Then
        If My.Computer.Keyboard.CtrlKeyDown Then
            e.Effect = DragDropEffects.Copy
        Else
            e.Effect = DragDropEffects.Move
        End If
    Else
        e.Effect = DragDropEffects.None
    End If
End Sub

Private Sub PBs_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs)
    Dim PB As PictureBox = DirectCast(sender, PictureBox)
    Dim tmpImage As Image = PB.Image ' store the current image
    PB.Image = e.Data.GetData(DataFormats.Bitmap) ' change it to the dropped image
    If e.Effect = DragDropEffects.Move Then
        If Not (PB Is Source) Then
            Source.Image = tmpImage ' put the stored image in the source picturebox (swap)
        End If
    End If
End Sub

End Class

您可以尝试更改您的PBs_DragDrop代码,以检查要将哪个PictureBox像这样删除

Private Sub PBs_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs)
    Dim PB As PictureBox = DirectCast(sender, PictureBox)
    If PB Is PictureBox2 Then
        'handle mistake here
    Else
        Dim tmpImage As Image = PB.Image ' store the current image
        PB.Image = e.Data.GetData(DataFormats.Bitmap) ' change it to the dropped image
        If e.Effect = DragDropEffects.Move Then
            If Not (PB Is Source) Then
                Source.Image = tmpImage ' put the stored image in the source picturebox (swap)
            End If
        End If
    End If
End Sub

您可以尝试更改您的PBs_DragDrop代码,以检查要将哪个PictureBox像这样删除

Private Sub PBs_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs)
    Dim PB As PictureBox = DirectCast(sender, PictureBox)
    If PB Is PictureBox2 Then
        'handle mistake here
    Else
        Dim tmpImage As Image = PB.Image ' store the current image
        PB.Image = e.Data.GetData(DataFormats.Bitmap) ' change it to the dropped image
        If e.Effect = DragDropEffects.Move Then
            If Not (PB Is Source) Then
                Source.Image = tmpImage ' put the stored image in the source picturebox (swap)
            End If
        End If
    End If
End Sub

如果我想控制4张图片如果我想控制4张图片