Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - DataGridView come intercettare la riga quando si scorrono con la freccia in giu
Forum - C# / VB.NET - DataGridView come intercettare la riga quando si scorrono con la freccia in giu

Avatar
alip1 (Normal User)
Pro


Messaggi: 145
Iscritto: 12/08/2019

Segnala al moderatore
Postato alle 15:41
Martedì, 04/04/2023
Buon Pomeriggio
Ho una data DataGridView che mi presenta per riga i dati di una lista che carico da db opportunamente.
Ora ho visto che utilizzando i tasti freccia giu o freccia su il puntatore di riga si sposta sulla riga successiva o precedente.
Vorrei sapere se è possibile sapere come fare per intercettare quando il puntatore di riga si sposta in modo da capire su quale riga si trova ed operare sui dati relativi.
Ho pensato di utilizzare l'evento RowLeave così:
Codice sorgente - presumibilmente VB.NET

  1. Private Sub DGListGroup_RowLeave(sender As Object, e As DataGridViewCellEventArgs) Handles DGListGroup.RowLeave
  2.        Dim row As Integer = 0
  3.       If e.RowIndex = -1 Then
  4.          Exit Sub
  5.       End If
  6.       If e.RowIndex >= 0 And e.RowIndex <= DGListGroup.Rows.Count - 1 Then
  7.             row = e.RowIndex + 1
  8.      
  9.       Else
  10.             row = e.RowIndex - 1
  11.       End If
  12.       Dim cell As DataGridViewCell = Me.DGListGroup.Rows(row).Cells(0)
  13.       Dim iId As Integer
  14.       iId = CInt(cell.Value.ToString)
  15.       SelectGroup(iId)
  16.       currentGroupId = iId
  17.       currentrow = row
  18.  
  19.      
  20.    End Sub


che funziona finchè utilizzo la freccia in giu; ma quando uso la freccia in su per tornare indietro sulle righe il cursore visualmente si sposta sulle righe precedenti ma il valore di row si incrementa per via della condizione nella if... non so come fare per decrementare il valore di row quando viene utilizzato il tasto freccia su. Forse mi devo memorizzare il valore della riga attuale in una variabile statica??
Grazie per ogni utile consiglio:love:

Ultima modifica effettuata da alip1 il 04/04/2023 alle 15:42
PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1389
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 17:05
Martedì, 04/04/2023
L'evento da usare è: RowEnter, con tale evento la routine funzionerà anche se clicchi la riga con il mouse.
L'evento RowLeave lo dovresti usare solo se devi sistemare i dati nella riga che si sta abbandonando.

Codice sorgente - presumibilmente VB.NET

  1. Private Sub DGListGroup_RowEnter(sender As Object, e As DataGridViewCellEventArgs) Handles DGListGroup.RowEnter
  2.     currentrow = e.RowIndex
  3.     Dim iId As Integer = CInt(DGListGroup.Rows(currentrow).Cells(0).Value.ToString)
  4.     SelectGroup(iId)
  5.     currentGroupId = iId
  6. End Sub




Ultima modifica effettuata da Carlo il 04/04/2023 alle 17:47


in programmazione tutto è permesso
PM Quote
Avatar
alip1 (Normal User)
Pro


Messaggi: 145
Iscritto: 12/08/2019

Segnala al moderatore
Postato alle 10:46
Martedì, 18/04/2023
Grazie risolto

PM Quote