C# 获取所选行';datagridview中的值并将它们相加

C# 获取所选行';datagridview中的值并将它们相加,c#,winforms,datagridview,label,C#,Winforms,Datagridview,Label,我现在正在预订winsform应用程序。当用户选择任意数量的行时,将有一个名为rental price的列,每行都在该列下。然后,将获取名为“租赁价格”列下此单元格的值,并将其相加显示到总成本标签文本中。但问题是总成本未显示。以下是我的代码: private void Payment_Load(object sender, EventArgs e) { NameOfUser.Text = UserAccounts[0].Name; EmailOfUser.Text = UserAcc

我现在正在预订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();

您是否收到任何错误或异常?你休息了吗points@un-幸运的是,没有错误/例外。添加了断点,但它们没有通过。谢谢!它解决了我的问题!!我投了更高的票,但它不会公开展示,因为我的声誉不到15。很抱歉哈哈,真不错,我的名声成了15。投了赞成票!非常感谢你!!!也谢谢你!也很高兴编码!!:)