2010-12-09 23 views
-1

Ich erstelle eine Anwendung in C#, Windows Forms.Entfernen der ersten Zeile in DataGridView entfernt tatsächlich alle Zeilen

Ich habe eine DataGridView und darin habe ich eine Spalte, die Button s enthält (DataGridViewButton Spalten). Ich habe ein On Button Click-Ereignis und so nennt es ein Verfahren, das eine Zeile entfernt:

private void dataGridView_CellClick(object sender, DataGridViewCellEventArgs e) 
{ 
    try 
    { 
     if (e.ColumnIndex == 5) 
     { 
      if (!dataGridView.Rows[e.RowIndex].IsNewRow) 
      { 
       dataGridView.Rows.Remove(dataGridView.CurrentRow); // removes current row 
      } 
     } 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show("Error: " + ex.Message); 
    } 
} 

Ich erste Zeilen hinzufügen und ich sie dann entfernen, wenn ich brauche, wenn ich die letzte Zeile dort entfernen, ist kein Problem . Das Problem tritt auf, wenn ich versuche, die erste oder eine andere Zeile außer der letzten zu entfernen. Wenn ich zum Beispiel die erste Zeile lösche, werden alle Zeilen gelöscht. Als ich es debuggte, scheint es, dass sich die Methode wiederholt, so oft Zeilen in meinem DataGrid sind.

Weiß jemand wie kann ich dieses Problem lösen?

Antwort

3

Haben Sie einen anderen Code haben, der wählt/setzt die aktuelle ausgewählte Zeile in der DataGridView.

Möglicherweise ist es eine Chance, dass es einen anderen Code gibt, der tatsächlich den Leerzeichenschlüssel an die aktuell ausgewählte Zeile sendet. Wenn also eine Zeile gelöscht wird, wird auch das Ereignis CellClick in der nächsten Zeile ausgelöst. Nur eine Vermutung BTW. Verwenden Sie auch die CellContentClick oder CellMouseClick Ereignisse.

+0

CellContentClick hat den Trick gemacht und spart mir eine Menge Zeit. Vielen Dank. Kann ich dir ein Bier kaufen? ;) – Thorusan86

+0

heyyy ... es ist eine tolle Sache. Du bist ein Held! :-) –

0

Änderung: dataGridView.Rows.Remove(dataGridView.CurrentRow); zu: dataGridView.Rows.RemoveAt(e.RowIndex);

+0

Sorry, aber das hilft mir nicht:/ – Thorusan86

+1

@ Thorusan86, müssen Sie möglicherweise mehr Code dann zur Verfügung stellen, wie von Ihrem Code oben gibt es keine Möglichkeit für uns, das Problem zu reproduzieren, das Sie gegenüberstehen. Meine Vermutung ist, dass es etwas wie eine "For-Schleife" in Ihrem Code geben muss, hat dieses Problem verursacht. – Bolu

Verwandte Themen