2012-07-02 10 views
8
private void dgv_CellDoubleClick(object sender, DataGridViewCellEventArgs e) 
{ 
foreach (DataGridViewRow r in dgv.Rows) r.Visible = false; 
} 

Ten kod działa, ale działa również, jeśli ColumnHeaders (nie tylko komórki) jest doubleClicked?
Chcę uruchomić go tylko wtedy, gdy komórka jest podwójnie kliknięta.
CellDoubleClick powinno oznaczać CellDoubleClick, a nie HeaderDoubleClick.Jak uruchomić kod tylko wtedy, gdy komórka, a nie nagłówek, w DataGridView jest doubleClicked?

Odpowiedz

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

Dziękujemy wszystkim. Wszystkie rozwiązania działają. Ale może ktoś może wyjaśnić, co jest następnie celem ColumnHeaderDoubleClick obsługi czy to działa na innej obsługi? Wydaje się głupie. – Alice

+1

W swoim pytaniu powiedziałeś, że używasz CellDoubleClick. Ponieważ RowHeader jest także komórką, zdarzenie jest uruchamiane. Jeśli korzystałeś ColumnHeaderDoubleClick to zdarzenie może zadziałać tylko na nagłówku kolumny podwójne kliknięcie. Mam nadzieję, że byłem wystarczająco jasny. – Vale

+0

komórki powinny być komórka, nagłówek, który powinien być nagłówka. Mimo wszystko dziekuję. – Alice

2

Można użyć DataGridViewCellEventArgs.RowIndex aby sprawdzić, czy nagłówek kliknięciu lub dowolną komórkę z wierszy kliknięciu.

3

Można sprawdzić, czy e.RowIndex ma wartość -1, co oznacza, że ​​zdarzenie miało miejsce w wierszu nagłówka.

1

Nie najczystszym sposobem aby to zrobić, ale można osiągnąć to tak

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

Twoje pytanie @Vale na temat celu ColumnHeaderDoubleClick? Jednym z przykładów mogę myśleć Kliknij dwukrotnie, aby posortować Siatka według kolumny – HatSoft

+0

sortowania na kliknięcie, nie DoubleClick. W każdym przypadku CellDoubleClick powinien być CellDoubleClick, a HeaderDoubleClick powinien być HeaderDoubleClick. Mimo wszystko dziekuję. – Alice

Powiązane problemy