如何根据关键字从 DataGridView 将数字添加到文本框中的值

How to add Number to Value in Textbox from DataGridView based on Keyword

我目前正在制作一个 VB.NET 表格,该表格将根据员工的薪酬计算出每个部门的总成本。所有员工都在 1 个 Datagridview 中,列中指定了他们的姓名、职位和工资。我正在尝试将文本框添加到 datagridview 的一侧,其中包含每个部门的总成本,当你将每个人的工资加起来(如果他们属于它)。不幸的是我一直 运行 进入这个错误:

System.ArgumentOutOfRangeException: 'Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index'

这是我的第一次尝试,也是最初出现错误的地方:

Try
  Dim Total As Decimal = 0
  For i As = 0 To Job_Viewer.Rows.Count Step +1 
    If Job_Viewer.Rows(i).Cells(1).Value = "Design" Then 'The error appeared here
      Total_Design.Text = +Job_Viewer.Rows(i).Cells(2).Value
    End If
  Next
Catch ex As Exception
  MessageBox.Show(ex.Message)
End Try

认为可能是 for 语句导致了它,我尝试了:

Try
  Dim Total As Decimal = 0
  Dim i = 1
  If Job_Viewer.Rows(i).Cells(1).Value = "Design" Then
    Total += Convert.ToDecimal(Job_Viewer.Rows(i).Cells(2).Value)
    Total_Design.Text = Total.ToString
  End If
Catch ex As Exception
  MessageBox.Show(ex.Message)
End Try

我不确定到底哪里出了问题,因为根据 vb.net,我编写代码的方式是正确的。有什么建议吗?

当我们数数时,我们从一开始,所以 Count 从一开始。它告诉我们有多少行。 .net 中的索引从零开始。如果我们有 7 行,索引将为 0 到 6。鉴于此,请务必记住在 For 循环中使用 Count 时的负一。

一个Cell一个DataGridView returns一个ObjectValue一个属性。您必须将值更改为 String 才能将其与 String 进行比较。同样将值更改为 Decimal 以进行加法。

您可以通过在项目属性中启用 Option Strict 来避免这些错误。

Private Sub OPCode()
    Dim Total As Decimal
    For i = 0 To Job_Viewer.Rows.Count - 1
        If Job_Viewer.Rows(i).Cells(1).Value.ToString = "Design" Then
            Total += CDec(Job_Viewer.Rows(i).Cells(2).Value)
            Total_Design.Text = Total.ToString
        End If
    Next
End Sub