[VB.NET] CheckedListBox - Drag-nDrop en Selecteren items

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • MrDry
  • Registratie: December 2001
  • Laatst online: 19-09 12:28

MrDry

Desperados!

Topicstarter
In VS2008 (vb.net) gebruik ik onderstaande code om de volgorde van de items in een checklistbox te kunnen veranderen.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
    Private Sub CheckedListBoxViews_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles CheckedListBoxViews.MouseDown
        Dim ix As Integer = CheckedListBoxViews.IndexFromPoint(e.Location)
        If ix <> -1 Then
            CheckedListBoxViews.DoDragDrop(ix.ToString, Windows.Forms.DragDropEffects.Move)
        End If
    End Sub

    Private Sub CheckedListBoxViews_DragOver(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) _
    Handles CheckedListBoxViews.DragOver
        If e.Data.GetDataPresent(Windows.Forms.DataFormats.Text) Then
            e.Effect = Windows.Forms.DragDropEffects.Move
            CheckedListBoxViews.SelectedIndex = CheckedListBoxViews.IndexFromPoint(CheckedListBoxViews.PointToClient(New System.Drawing.Point(e.X, e.Y)))
        End If
    End Sub

    Private Sub CheckedListBoxViews_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) _
    Handles CheckedListBoxViews.DragDrop
        If e.Data.GetDataPresent(Windows.Forms.DataFormats.Text) Then
            Dim dix As Integer = CInt(e.Data.GetData(Windows.Forms.DataFormats.Text))
            Dim ix As Integer = CheckedListBoxViews.IndexFromPoint(CheckedListBoxViews.PointToClient(New System.Drawing.Point(e.X, e.Y)))
            If ix <> -1 Then
                Dim obj As Object = CheckedListBoxViews.Items(dix)
                CheckedListBoxViews.Items.Remove(obj)
                CheckedListBoxViews.Items.Insert(ix, obj)
                CheckedListBoxViews.SetSelected((ix), True)
            End If
        End If
    End Sub


Deze code werkt naar behoren maar ik krijg het niet voor elkaar om een element de selecteren door er op te klikken. Ik heb al geprobeerd of het verschil maakt als ik de 'CheckOnClick' propertie aan of uit zet maar dat maakt niets uit.

Het vreemde is dat als ik het doubleclick event afvang met een msgbox oid wordt het element wel geselecteerd. Het is dan wel afhankelijk hoe snel je dubbelklikt. Iets te snel of iets te langzaam selecteerd wederom niets.

Als ik de mousedown eventhandler weggooi werkt het selecteren wel zoals verwacht. Heeft iemand een oplossing om beide te laten functioneren?

Quod licet lovi, non licet bovi