In VS2008 (vb.net) gebruik ik onderstaande code om de volgorde van de items in een checklistbox te kunnen veranderen.
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?
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