如何根据关键字从 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一个Object
的Value
一个属性。您必须将值更改为 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
我目前正在制作一个 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一个Object
的Value
一个属性。您必须将值更改为 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