Nano Hash - криптовалюты, майнинг, программирование

Перетаскивание в vb.net

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

Но я хочу добавить оператор 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

Ответы:


1

Вы можете попробовать изменить свой код 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
02.06.2016
  • Если я хочу контролировать 4 изображения 27.06.2016
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

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

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..