2012-07-02 5 views

risposta

18
private void dgv_CellDoubleClick(object sender, DataGridViewCellEventArgs e) { 
      if (e.RowIndex != -1) { 
       //do work 
      } 
     } 
+0

grazie a tutti. Tutte le soluzioni funzionano. Ma qualcuno potrebbe spiegare, qual è lo scopo del gestore ColumnHeaderDoubleClick se viene eseguito su un altro gestore? Sembra stupido. – Alice

+1

Nella tua domanda hai detto che stai usando CellDoubleClick. Poiché RowHeader è anche una cella, l'evento si attiva. Se hai usato ColumnHeaderDoubleClick questo evento si attiva solo sull'intestazione della colonna doppio clic. Spero di essere stato abbastanza chiaro. – Vale

+0

La cella deve essere cella, l'intestazione deve essere intestazione. Grazie lo stesso. – Alice

2

È possibile utilizzare DataGridViewCellEventArgs.RowIndex per verificare se si fa clic sull'intestazione o se si fa clic su una cella qualsiasi dalle righe.

3

È possibile verificare se e.RowIndex è -1, il che significa che l'evento si è verificato su una riga di intestazione.

1

Non il modo più pulito di fare, ma si può ottenere in questo modo

private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e) 
{ 
    if (((System.Windows.Forms.DataGridView)(sender)).CurrentCell != null) 
    { 
     //Do what you want here................ 
    } 
} 
+1

La tua domanda a @Vale su qual è lo scopo di ColumnHeaderDoubleClick? Un esempio mi viene in mente di fare doppio clic per ordinare la griglia per colonna – HatSoft

+0

L'ordinamento è su clic, non su DoubleClick. In ogni caso, CellDoubleClick deve essere CellDoubleClick e HeaderDoubleClick deve essere HeaderDoubleClick. Grazie lo stesso. – Alice

Problemi correlati