2016-07-03 9 views
1

Ich möchte summieren alle Werte werden automatisch in Spalte 4 eingegeben und zeigt es in das Textfeld. ich verwende diesen Code:kann nicht automatisch den Gesamtwert des Textfelds aktualisieren, wenn Sie die Löschtaste auf der Tastatur drücken

private void totalAll() 
{ 
    int a = 0, b = 0; 
    for (a = 0; a < dataGridView1.Rows.Count; ++a) 
    { 
     b += Convert.ToInt32(dataGridView1.Rows[a].Cells[3].Value); 
    } 
    textBox1.Text = b.ToString(); 
} 

private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e) 
{ 
    foreach (DataGridViewRow row in dataGridView1.Rows) 
     totalAll();   
} 

alles funktioniert, aber wenn ich die Löschtaste auf der Tastatur drücken, wird der Gesamtwert der Textbox nicht automatisch aktualisiert. Sein Wert ist nicht vermindert.

before delete

enter image description here

+0

Was ist die Datenquelle Ihres Rasters? Es könnte elegantere Lösungen geben, wenn Sie Datenbindung verwenden. –

+0

Ich verwende dieses Raster nur, um die Daten zu verarbeiten, bevor sie in der Datenbank gespeichert werden. – Underdog

+1

Es ist wirklich besser, ein Modell zu verwenden und Datenbindungsfunktionen zu verwenden. Das Modell kann eine einfache Klasse in Ihrer Anwendung oder eine "DataTable" sein. Dann würde das Anzeigen von Daten im Raster und anderen Steuerelementen und die Verarbeitung von Daten wirklich einfacher und eleganter sein. –

Antwort

2

Sie sollten tun neu berechnen der Gesamtwert, wenn eine Zeile aus der Datenrasteransicht gelöscht wird.

Sie sollten auf das Ereignis warten, wenn Benutzer eine Zeile gelöscht hat Sie sollten dies nach InitializedComponent(); in Ihrem Formularkonstruktor hinzufügen.

dataGridView1.UserDeletedRow += (s, e) => totalAll(); 
1

Versuchen Sie das Datagridview-Ereignis RowsRemoved abonnieren. Das habe ich nicht getestet, sollte aber so etwas wie sein:

dataGridView1.RowsRemoved += (s,e) => totalAll(); 

By the way, ich glaube, Sie die foreach auf dem dataGridView1_CellEndEdit Verfahren entfernen kann, scheint nicht nichts

+0

ich versuche das aber fehler bei "e" ... – Underdog

Verwandte Themen