在DataGridView列中计算

Jav*_*ram 3 .net c# datagridview winforms

我有一个DataGridView,我想在其中将两个不同列的值汇总到第三列.

示例DataGridView:

A   B   Total
1   2    3
25  35   60
5   -5   0
Run Code Online (Sandbox Code Playgroud)

我想在输入A & B column或离开当前行的值之后添加(A + B).并且还想将Total Column设置为ReadOnly.

Val*_*ale 7

您可以在CellValidatedEvent上执行此操作,并且可以将相同的方法应用于RowValidated:

 private void dataGridView_CellValidated(object sender, DataGridViewCellEventArgs e) {
                if (e.RowIndex > -1) {
                    DataGridViewRow row = dataGridView.Rows[e.RowIndex];
                    string valueA = row.Cells[columnA.Index].Value.ToString();
                    string valueB = row.Cells[columnB.Index].Value.ToString();
                    int result;
                    if (Int32.TryParse(valueA, out result)
                        && Int32.TryParse(valueB, out result)) {
                        row.Cells[columnTotal.Index].Value = valueA + valueB;
                    }
                }
            }
Run Code Online (Sandbox Code Playgroud)

您可以在设计器中将列设置为ReadOnly,或者像这样:

dataGridView.Columns["Total"].ReadOnly = true
Run Code Online (Sandbox Code Playgroud)


A81*_*A81 6

你可以轻松做到这一点

但是您应该有一个数据集或本地数据库连接(例如 SQL),我假设您已获得它并将其命名为 Totaldataset。

很容易完成,我知道现在回答为时已晚,但也许它可以帮助一些新读者。

Datacolumn column = new Datacolumn (); 
column.Columnname = "Total"; 
Totaldataset.Tables[0].Columns.["Total"].Expression = "a+b";
Run Code Online (Sandbox Code Playgroud)