2010-10-13 23 views
8

Sto usando vb.net e DataGridView su un winform.Fare doppio clic sulla riga DataGridView?

Quando un utente fa doppio clic su una riga, voglio fare qualcosa con questa riga. Ma come posso sapere se l'utente ha fatto clic su una riga o in qualsiasi punto della griglia? Se utilizzo DataGridView.CurrentRow, se viene selezionata una riga e l'utente fa clic in qualsiasi punto della griglia, la riga corrente mostrerà il selezionato e non dove l'utente ha fatto clic (che in questo caso non sarebbe su una riga e vorrei ignorarlo).

risposta

24

Prova caso CellMouseDoubleClick ...

Private Sub DataGridView1_CellMouseDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles DataGridView1.CellMouseDoubleClick 
    If e.RowIndex >= 0 AndAlso e.ColumnIndex >= 0 Then 
     Dim selectedRow = DataGridView1.Rows(e.RowIndex) 
    End If 
End Sub 

Questo sarà solo il fuoco se l'utente è in realtà più di una cella della griglia. Il controllo If filtra i doppi clic sui selettori di riga e sulle intestazioni.

+0

Vale la pena notare che è possibile utilizzare 'e.RowIndex == -1' se si desidera eseguire qualcosa se non si fa clic su una riga – Luke

0

Vorrei utilizzare l'evento DoubleClick dello DataGridView. Ciò si attiva almeno quando l'utente fa doppio clic nella griglia di dati: è possibile utilizzare MousePosition per determinare quale riga (se presente) ha fatto doppio clic sull'utente.

+0

Sto usando il DoubleClick della DataGridView. Ma come posso utilizzare la finestra per dedurre se il doppio clic si trovava su una riga effettiva? – Alex

0

Si potrebbe provare qualcosa di simile.

Private Sub DataGridView1_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles DataGridView1.DoubleClick 
    For index As Integer = 0 To DataGridView1.Rows.Count 
     If DataGridView1.Rows(index).Selected = True Then 
      'it is selected 
     Else 
      'is is not selected 
     End If 
    Next 
End Sub 

Tenete a mente non ho potuto testare questo, perché ho avuto alcun diddent dati per compilare il mio DataGridView.

0

Si può provare questo:

Private Sub grdview_CellDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles grdview.CellDoubleClick 

    For index As Integer = 0 To grdview.Rows.Count - 1 

     If e.RowIndex = index AndAlso e.ColumnIndex = 1 AndAlso grdview.Rows(index).Cells(1).Value = "" Then 

      MsgBox("Double Click Message") 

     End If 
    Next 
End Sub 
3

Usa Datagridview DoubleClick EVENET e poi Datagrdiview1.selectedrows [0] .cell [ "cellName"] per ottenere il valore e di processo.

L'esempio seguente mostra i client registrati facendo doppio clic sulla riga selezionata.

private void (object sender, EventArgs e) {dgvClientsUsage_DoubleClick

 if (dgvClientsUsage.SelectedRows.Count < 1) 
     { 
      MessageBox.Show("Please select a client"); 
      return; 
     } 

     else 
     { 
      string clientName = dgvClientsUsage.SelectedRows[0].Cells["ClientName"].Value.ToString(); 

      // show selected client Details 
      ClientDetails clients = new ClientDetails(clientName); 
      clients.ShowDialog(); 

     } 
    } 
Problemi correlati