Member 11856456 Ответов: 1

Listbox продолжает переходить к следующей записи в строке выбора


Поработав над этим кодом для перестановки элементов списка, я наконец-то заставил его работать. Проблема в том, что теперь, когда я иду, чтобы сделать выбор для сравнения с другим выбором, выбранный элемент автоматически переходит к следующему элементу и выбирает его.
Private Sub ListBox1_MouseDown(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles ListBox1.MouseDown

        Dim dde1 As DragDropEffects = DoDragDrop(ListBox1.SelectedItem, DragDropEffects.Move)

        dde1 = DragDropEffects.All

    End Sub
    Private Sub ListBox1_DragOver(sender As Object, e As System.Windows.Forms.DragEventArgs) Handles ListBox1.DragEnter

        e.Effect = DragDropEffects.All
        ListBox1.Items.Remove(ListBox1.SelectedItem)
    End Sub

    Private Sub ListBox1_DragDrop(sender As Object, e As System.Windows.Forms.DragEventArgs) Handles ListBox1.DragDrop

        If e.Data.GetDataPresent(DataFormats.Text) Then
            e.Effect = DragDropEffects.Move
            ListBox1.SelectedIndex = ListBox1.IndexFromPoint(ListBox1.PointToClient(New Point(e.X, e.Y)))

        End If
        Dim str As String = DirectCast(e.Data.GetData(DataFormats.StringFormat), String)
        ListBox1.Items.Insert(ListBox1.SelectedIndex, str)

    End Sub
<pre> 

I want to be able to select items without it jumping

What I have tried:

Thought that originally I set the remove from listbox in the wrong portion of the code, but that wasn't the problem. Tried to see if maybe the index portion was throwing it off, but I didn't get anywhere with that.

1 Ответов

Рейтинг:
2

Patrice T

Не очевидно, виновен этот код или нет. Вы уверены, что проблема в этой части кода ?

Я запускал отладчик, затем отслеживал события, чтобы сузить исследование и в конечном итоге определить, кто из них виновен.
Или, зная, что выбор меняется, я бы поставил точки останова на строках, которые могут это сделать, и делал пробную версию до тех пор, пока не обнаружу, где находится нарушающий код.

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

Отладчик-Википедия, свободная энциклопедия[^]
Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]
Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.