2013-02-16 2 views
1

J'ai cet événement d'index sélectionné d'un ListBox:Comment puis-je utiliser le bouton droit de la souris dans un listBox sur l'index sélectionné?

private void listBox1_SelectedIndexChanged(object sender, EventArgs e) 
{  
    if (listBox1.SelectedItem != null) 
    { 
     label4.Text = listBox1.SelectedItem.ToString(); 
     string startTag = "Url: "; 
     string endTag = " ---"; 
     int startTagWidth = startTag.Length; 
     int endTagWidth = endTag.Length; 
     int index = 0; 
     index = label4.Text.IndexOf(startTag, index); 
     int start = index + startTagWidth; 
     index = label4.Text.IndexOf(endTag, start + 1); 
     string g = label4.Text.Substring(start, index - start); 
     label4.Text = g; 
     mainUrl = g; 
    } 
} 

Je veux que après avoir sélectionné un indice (point) dans le ListBox et je fais maintenant clic droit avec la souris sur cet indice, il fera quelque chose. Mais si je vais faire un clic droit sur n'importe quelle autre zone sur le ListBox ou le formulaire, il ne fera rien. Seulement si la souris est sur l'index sélectionné.

Ce que je dois faire est que l'utilisateur sera en mesure de supprimer/supprimer un élément du ListBox. Je ne sais pas quelle est la meilleure logique de la façon de le faire lorsque l'utilisateur clique sur le bouton droit de la souris.

Montrer Je le fais quand l'utilisateur a d'abord sélectionné un élément et seulement si la souris est au-dessus/sur cet élément sélectionné? Montrer que je le fais si l'utilisateur clique sur le bouton droit de la souris sur n'importe quel élément, il le sélectionne automatiquement et fait quelque chose? Je ne sais pas quelle est la meilleure façon et logique et comment le faire.

Répondre

1

Il suffit de vous abonner à la MouseDown de la zone de liste et d'utiliser IndexFromPoint pour vérifier si l'élément en cours sur lequel vous avez cliqué est l'élément sélectionné.

Voici un exemple:

private void listBox1_MouseDown(object sender, MouseEventArgs e) 
{ 
     if (e.Button == System.Windows.Forms.MouseButtons.Right) 
     { 
      int index = listBox1.IndexFromPoint(e.Location); 
      { 
       if (index == listBox1.SelectedIndex) 
       { 
        MessageBox.Show("Selected item clicked"); 
       } 
      } 
     } 
} 
Questions connexes