Principale utente con più risposte
Recuperare l'elemento della listbox al passaggio del mouse

Domanda
-
Risposte
-
Buongiorno wawalex,
si tratta di una operazione piuttosto immediata: la ListBox dispone di un evento, MouseMove, attraverso cui recuperare le coordinate del cursore rispetto al controllo stesso. Questo evento, unitamente al metodo IndexFromPoint (proprio della ListBox) consente di recuperare l'indice dell'elemento, e quindi di poter derivarne il contenuto.
In codice, questo:
Public Class Form1 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load ListBox1.DataSource = {"a", "b", "c", "d", "e", "f"} End Sub Private Sub ListBox1_MouseMove(sender As Object, e As MouseEventArgs) Handles ListBox1.MouseMove Dim item As Integer = ListBox1.IndexFromPoint(e.X, e.Y) If item > -1 Then TextBox1.Text = ListBox1.Items(item).ToString() End Sub End Class
Come vedi, dispongo qui di una ListBox, che vado a popolare con le lettere da "a" a "f".
Nell'evento MouseMove, vado a ricavarmi l'indice dell'elemento su cui il cursore sta passando, ed infine, se esso è valido (ovvero, se è maggiore di -1, ossia sono nella zona degli elementi valorizzati), ricavo dalla ListBox l'elemento avente tale indice, riportandone il contenuto su una TextBox appositamente creata.(Nota: nello screenshot purtroppo non si vede, ma in linea con quanto affermato, il cursore era posizionato sull'elemento "c")
Spero di esserti stato di aiuto
Emiliano Musso // Microsoft MVP .NET
- Proposto come risposta vbMizio martedì 2 agosto 2016 08:44
- Modificato Emiliano MussoModerator martedì 2 agosto 2016 08:46 Chiarimento aggiuntivo in chiusura
- Contrassegnato come risposta Alex Mengoli martedì 2 agosto 2016 11:48
Tutte le risposte
-
Ciao Wawalex,
Vedi qui: LINK
La risposta di ChiefRedBull ti darà un idea come iniziare. Purtroppo non sono sicuro cosa esattamente vorresti ottenere visto la poca informazione fornite.
Nonostante, prendendo le XY della mouse, controlli se corrisponde alle XY della listbox e assegni un commando che istruisce l'app di leggere e/o prendere il valore della suddetta listbox mettendola in una variabile. Poi usarla sarebbe facile.
• Microsoft offre questo servizio gratuitamente, per aiutare gli utenti e aumentare il database dei prodotti e delle tecnologie. Il contenuto fornito “as is“ non comporta alcuna responsabilità da parte dell’azienda.
-
Buongiorno wawalex,
si tratta di una operazione piuttosto immediata: la ListBox dispone di un evento, MouseMove, attraverso cui recuperare le coordinate del cursore rispetto al controllo stesso. Questo evento, unitamente al metodo IndexFromPoint (proprio della ListBox) consente di recuperare l'indice dell'elemento, e quindi di poter derivarne il contenuto.
In codice, questo:
Public Class Form1 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load ListBox1.DataSource = {"a", "b", "c", "d", "e", "f"} End Sub Private Sub ListBox1_MouseMove(sender As Object, e As MouseEventArgs) Handles ListBox1.MouseMove Dim item As Integer = ListBox1.IndexFromPoint(e.X, e.Y) If item > -1 Then TextBox1.Text = ListBox1.Items(item).ToString() End Sub End Class
Come vedi, dispongo qui di una ListBox, che vado a popolare con le lettere da "a" a "f".
Nell'evento MouseMove, vado a ricavarmi l'indice dell'elemento su cui il cursore sta passando, ed infine, se esso è valido (ovvero, se è maggiore di -1, ossia sono nella zona degli elementi valorizzati), ricavo dalla ListBox l'elemento avente tale indice, riportandone il contenuto su una TextBox appositamente creata.(Nota: nello screenshot purtroppo non si vede, ma in linea con quanto affermato, il cursore era posizionato sull'elemento "c")
Spero di esserti stato di aiuto
Emiliano Musso // Microsoft MVP .NET
- Proposto come risposta vbMizio martedì 2 agosto 2016 08:44
- Modificato Emiliano MussoModerator martedì 2 agosto 2016 08:46 Chiarimento aggiuntivo in chiusura
- Contrassegnato come risposta Alex Mengoli martedì 2 agosto 2016 11:48
-