2016-06-01 7 views
1

Я новичок в визуальной базой, и я последовал за одной статьей, чтобы написать этот код, чтобы перетаскивать изображения.Перетаскивание в vb.net

Но я хочу добавить инструкцию 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 

ответ

0

Вы можете попробовать изменять свой код 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 
+0

Если я хочу управлять 4 фотографии –

 Смежные вопросы

  • Нет связанных вопросов^_^