我现在正在制作预订 winsform 应用程序。当用户选择任意数量的行时,每行下面都会有一个名为 rental price 的列。然后将获取名为租金价格的列下的该单元格的值,并将其加起来并显示到总成本标签文本中。但问题是总成本未显示。这是我的代码:
private void Payment_Load(object sender, EventArgs e)
{
NameOfUser.Text = UserAccounts[0].Name;
EmailOfUser.Text = UserAccounts[0].Email;
PaymentType.Text = UserAccounts[0].PaymentType;
double totalCost = 0;
foreach (DataGridViewRow row in b1.DataGridView1.SelectedRows)
{
int index = 0;
foreach (DataGridViewCell cell in row.Cells)
{
totalCost += (double)dataGridView1.Rows[index].Cells[4].Value;
}
index++;
}
TotalCost.Text = Convert.ToString(totalCost);
}
最佳答案
是的,错误在于循环,截至目前,您正在迭代 SelectedRows
中的行,并通过使用内部循环再次遍历每行的单元格,但取值与实际的网格而不是单元格。您可以使这变得简单,因为您想要遍历选定的行并且需要对每行中的 .Cells[4]
的值求和。为此你必须做这样的事情:
foreach (DataGridViewRow row in b1.DataGridView1.SelectedRows)
{
string value = row.Cells[4].Value.ToString();
double currentCellValue = 0.0;
if(double.TryParse(value , out currentCellValue)
{
totalCost += currentCellValue;
}
}
TotalCost.Text = totalCost .ToString();
关于c# - 在 datagridview 中获取选定行的值并将它们相加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41421953/