2010-07-07 4 views
0

Au moins un élément reste toujours sélectionné dans ListBox. Je veux que lorsque l'utilisateur clique sur une zone vide de ListBox, la sélection doit être effacée. Comment faire ça? J'essaie de répliquer Opera Notes dans le cadre de mon application. D'abord j'utilisais un DataGridView lié maintenant j'utilise un ListBox lié sur le volet gaucheEffacer ListBox Sélection lorsque vous cliquez sur une zone vide

Répondre

3

Gérez l'événement ListBox.MouseDown.

Appelez ListBox.IndexFromPoint, en transmettant la propriété Location à partir du paramètre MouseEventArgs de l'événement MouseDown.

Cela devrait retourner l'index de l'élément sur lequel on a cliqué, ou ListBox.NoMatches si le clic était sur une zone vide.

Si la valeur de retour est ListBox.NoMatches, définissez la propriété ListBox.SelectedIndex sur -1 pour effacer la sélection.

+0

Merci! Je l'ai fait avec listbox, est-ce que je peux faire la même chose avec vue de grille de données? – SMUsamaShah

+0

Notez que vous n'avez pas besoin de créer un nouveau gestionnaire pour MouseDown juste pour obtenir le MouseEventArgs. Dans votre gestionnaire de clic existant, vous pouvez convertir e en une nouvelle variable MouseEventArgs et obtenir Location à partir de cette variable. –

1

M. Avalanchis a déjà répondu à cette question. J'ajoute juste le code nécessaire pour suivre les étapes qu'il a suggérées. Espérons que le code explicite aidera.

private void listBox1_MouseDown(object sender, MouseEventArgs e) 
    { 
     Point pt = new Point(e.X, e.Y); 
     int index = listBox1.IndexFromPoint(pt); 

     if (index <= -1) 
     { 
      listBox1.SelectedItems.Clear(); 
     } 


    } 
Questions connexes