我正在尝试创建一个dataGridView,它有2列,第1列包含名称,第2列包含数字,这很正常。
我现在想让用户使用键盘或鼠标选择一行或多行,这些行应根据所选行自动累计数字列。
到目前为止,我有以下内容:
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if (dataGridView1.SelectedCells.Count > 0)
{
int selectedrowindex = dataGridView1.SelectedCells[0].RowIndex;
DataGridViewRow selectedRow = dataGridView1.Rows[selectedrowindex];
string a = Convert.ToString(selectedRow.Cells[0].Value);
}
}
string a
最终会在表单上的标签中显示总数。
但这似乎是做我想要实现的目标的错误方法。有什么建议吗?
答案 0 :(得分:1)
如果您想要找到所选行'的特定列的总和。值:
int total = dgv.SelectedRows.Cast<DataGridViewRow>().Sum(
row => (int) row.Cells[colSomeNumber.Name].Value);
如果您想要找到所选的单元格总数。值:
int total = dgv.SelectedCells.Cast<DataGridViewCell>().Sum(cell => (int) cell.Value);
如果您想要找到所选的单元格总数。只有一些列的值,这样做:
int total = dgv.SelectedCells.Cast<DataGridViewCell>().Where(
c => c.OwningColumn == colSomeNumber).Sum(cell => (int) cell.Value);
其中colSomeNumber
是实际列。
只需将其放入dgv_SelectionChanged
事件就可以了。这几乎是&#34;最好的&#34;这样做的方法。