Selezionare un riga in datagridview con codice VB.net

di Giorgio il
11 risposte

Buongiorno,

ho creato un datagridview  e vorrei, tramite codice selezionare una determinata riga per renderla attiva come si ci cliccassi sopra con il mouse,

ho provato con il seguente codice ma senza risultato:

ProvinceDataGridView.CurrentCell = ProvinceDataGridView(i, 0)

dove i è l'indice di un ciclo For Next

Qualche suggerimento

Grazie

Giorgio

11 Risposte

  • 21/07/2023 - Giorgio ha scritto:


    ho creato un datagridview  e vorrei, tramite codice selezionare una determinata riga per renderla attiva come si ci cliccassi sopra con il mouse,

    Prova ad anteporre Me.

    Me.ProvinceDataGridView.CurrentCell = Me.ProvinceDataGridView(1, 0)

    (anche se mi sembra strano che sia tutto qui)

  • Pubblica il codice per intero… E comunque devi usare la proprietà Selected della riga.

  • 21/07/2023 - Sgrubak ha scritto:


    Pubblica il codice per intero… E comunque devi usare la proprietà Selected della riga.

    For i = 1 To NumProv
               AggiornaXMLProvTSPB.Value = i
               Dim nomeprov As String = ProvinceDataGridView.Rows(i - 1).Cells(1).Value()
               Dim nomesigla As String = ProvinceDataGridView.Rows(i - 1).Cells(2).Value()
               Dim nomeregione As String = ProvinceDataGridView.Rows(i - 1).Cells(3).Value()
               AggXMLProvTSL.Text = nomeprov
               CreateNodoProvincie(i, nomeprov, nomesigla, nomeregione, Scrivi)
               ProvinceDataGridView.CurrentCell = ProvinceDataGridView.Rows(i).Cells(0).Selected
               AggiornaXMLComuniTSPB.Maximum = ComuniDataGridView.RowCount
    ……

    ho aggiunto selected ma segnala errore

  • Prova ad anteporre Me.

    Me.ProvinceDataGridView.CurrentCell = Me.ProvinceDataGridView(1, 0)

    (anche se mi sembra strano che sia tutto qui)

    La qualificazione “me” non si usa più

  • 21/07/2023 - Giorgio ha scritto:


    ho aggiunto selected ma segnala errore

    E già… È una proprietà di tipo Boolean. XD Non puoi assegnarla ad un oggetto.

    Dovrebbe essere

    ProvinceDataGridView.Rows(i).Selected = True

    21/07/2023 - Giorgio ha scritto:


    La qualificazione “me” non si usa più

    E dove l'hai sentita/letta questa? Il “Me” magari viene sottinteso, ma in determinati contesti serve assolutamente. Ok che potresti ricorrere ad un Extension Method, però… 

  • 21/07/2023 - Sgrubak ha scritto:

    E già… È una proprietà di tipo Boolean. XD Non puoi assegnarla ad un oggetto.

    Dovrebbe essere

    ProvinceDataGridView.Rows(i).Selected = True

    Anche impostato così non funziona, risulta sempre selezionata la prima riga del DataGridView, possibile che non ci sia una soluzione?

  • Salve,

    vedi se  funziona…

    Dim iCol as integer = x
    Dim iRow as integer = y
    
    Me.ProvinceDataGridView.ClearSelection()
    Me.ProvinceDataGridView.FirstDisplayedScrollingColumnIndex = iCol
    Me.ProvinceDataGridView.CurrentCell = Me.ProvinceDataGridView.Rows(iRow).Cells(iCol)
    Me.ProvinceDataGridView.Rows(iRow).Cells(iCol).Selected = True
    Me.ProvinceDataGridView.Columns(iCol).Selected = True

    salutoni romagnoli
    – 
    Andrea

  • 21/07/2023 - Giorgio ha scritto:


    Anche impostato così non funziona

    A me funziona regolarmente. A questo punto mi viene da chiedermi:

    1) Hai abilitato la multiselezione? Se lo fai manualmente, riesci a selezionare più di una riga per volta?

    2) Il resto del codice, inficia sulla selezione? Hai fatto debug step per step ed hai verificato che da nessun altra parte si vada a modificare la selezione?

  • Ma la selezione è all'interno del ciclo? Vorresti che la selezione cambiasse mentre il ciclo va avanti? 

    Devi aggiungere una chiamata a DoEvents probabilmente

  • 22/07/2023 - oregon ha scritto:


    Ma la selezione è all'interno del ciclo? Vorresti che la selezione cambiasse mentre il ciclo va avanti? 

    Devi aggiungere una chiamata a DoEvents probabilmente

    Si, potresti farmi un esempio per la chiamata DoEvents.

    Grazie a tutti 

  • Scusa ma di che esempio parli? È una sola riga

    Se hai dubbi fai una ricerca semplice

    VB.NET  Doevents

    e leggi la pagina Microsoft che ti serve per capire e avere suggerimenti ed esempi d'uso.

    E anche le tante pagine dei risultati che ottieni

    Può darsi che la DoEvents non sia la soluzione ottimale ma facci sapere

Devi accedere o registrarti per scrivere nel forum
11 risposte