Inloggen
 
 
 
 
    
Weten op welk listbox item geclicked is als er meerdere items geselecteerd kunnen worden
Location: BlogsHenri Koppen - Developer    
Posted by: Henri Koppen 3-8-2007 9:52
In een listbox met multiple selection mode aan weet je niet met de selected_index change event op welk item er nu geclicked is. Je hebt hooguit de verzameling geselecteerde item, hieronder is de oplossing om dit (windows forms vb.net 2.0) op te lossen door de muis klik op te vangen
Als je in VB.NET (windows forms) vb.net 2.0 op een listitem klikt waarbij er meerdere selecties mogelijk zijn weet je niet op welk item geklikt is. Errug onhandig, je kan dan wel alle items uitlezen, maar dan nog weet je niet precies op welk item je moet reageren.

Door het MouseDown event af te vangen kun je wel zien op welk item geklikt is. (maak even geen onderscheid tussen links en rechts). In dit voorbeeld maak ik een kolom in een DataGridView zichtbaar of onzichtbaar (listbox bevat kolomnamen).

Code:

  Private Sub Kolommen_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Kolommen.MouseDown

    Dim i As Integer
    For i = 0 To Kolommen.Items.Count
      If Kolommen.GetItemRectangle(i).Contains(e.Location) Then
        gvTaken.Columns(Kolommen.Items(i).ToString()).Visible = Not gvTaken.Columns(Kolommen.Items(i).ToString()).Visible
        Exit Sub
      End If
    Next

  End Sub


De crux zit hem in Kolommen.GetItemRectangle(i).Contains(e.Location)

Let op, op het internet vind je ook andere oplossingen voor de muis vinden, maar deze houden (vaak) geen rekening met listbox die scrollbars hebben!
Permalink |  Trackback
  
 
Weblogs
    
Archief
    
Zoeken
    
 
 
 
 
Copyright 2006-2009 by Arcencus
Privacy Statement | Terms Of Use