[C#] ListBox Eintrag unter aktueller Mausposition anzeigen

Drucken
( 1 Vote )
Hauptkategorie: Programmieren Kategorie: C#
Erstellt am 07.12.2011 Zuletzt aktualisiert am 02.02.2012 Geschrieben von Jonny132
Immer wieder wird gefragt, wie man einen ListBox - Eintrag unter der aktuellen Mausposition auslesen kann, ohne dass der User darauf geklickt haben muss.
Dies ist eigentlich nicht sehr schwer, da uns die ListBox einige nützliche Methoden zur Verfügung stellt.
Um dies in einem Beispiel zu zeigen erstellen wir ein neues Windows Forms Projekt und fügen der MainForm eine ListBox und ein Label hinzu. In dem Label soll später der ListBox Eintrag unter der Mausposition angezeigt werden.

Form Load Ereignis

 private void Form1_Load(object sender, EventArgs e)
 {
   for (int i = 0; i < 200; i++)
   {
     listBox1.Items.Add("ListBoxEintrag " + i.ToString());
   }
   listBox1.MouseMove += new MouseEventHandler(listBox1_MouseMove);
 }
Im Form Load - Ereginiss fügen wir zuerst der ListBox ein paar Testeinträge hinzu. Dies machen wir am besten in dem wir eine Schleiffe von 0 - 200 durchlaufen lassen und in jedem Schleifendurchlauf der ListBox einen Eintrag hinzufügen.
Danach abbonieren wir noch das MouseMove - Event der ListBox.

MouseMove Event der ListBox

 void listBox1_MouseMove(object sender, MouseEventArgs e)
 {
   int index = listBox1.IndexFromPoint(e.Location);
 
   if (index > -1)
   {
     label1.Text = listBox1.Items[index].ToString();
   }
 }
Alles was wir in diesem Event machen müssen, ist den aktuellen Index unter dem Mauszeiger herauszufinden. Glücklicherweise bietet uns genau für diesen Fall die ListBox die IndexFromPoint - Methode an. Dieser Methode übergeben wir wiederrum die aktuellen Koordinaten der Maus.
Danach überprüfen wir nur noch ob der Index größer als -1 ist, da falls unter der Maus kein Eintrag wäre die IndexFromPoint - Methode -1 zurückgibt. Nun kommt noch das Label zur Aktion. Wir weisen der Text - Eigenschaft den ListBoxEintrag mit dem Index zu.

Das wars auch schon. Sie können das Projekt starten und ausprobieren.

    Veröffentlichen Sie ihre Kommentare ...