【发布时间】:2021-10-10 15:33:46
【问题描述】:
我目前正在编写一个 VB.NET 表单,该表单将根据员工的工资计算每个部门的成本。所有员工都在 1 个 Datagridview 中,列中指定了他们的姓名、职位和工资。当您将每个人的工资相加时,我正在尝试将文本框添加到 datagridview 的一侧,其中包含每个部门的总成本(如果他们低于该工资)。不幸的是,我一直遇到这个错误:
System.ArgumentOutOfRangeException: '索引超出范围。必须是非负数且小于集合的大小。 参数名称: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,我不确定到底出了什么问题,我编写代码的方式是正确的。有什么建议吗?
【问题讨论】:
-
您发布的代码无法编译。通过复制代码而不是重新输入代码来避免这种情况。
For i As = 0 To Job_Viewer.Rows.Count Step +1: 不需要 Step +1,它已经加一了,但是因为它是从零开始的,所以你必须少做一:Row.Count - 1 -
对我来说是这样吗?那里有 1 行不应该存在,我刚刚删除了这可能是问题所在。整个内容都是从我的原始代码中复制粘贴的
-
这不会编译:
For i As = 0 To -
如果是我,当然取决于你如何将源数据绑定到这个 DVG。我会对源数据进行求和,使整个过程变得更简单,并且可以用一行代码来完成。 DVG等UI元素用于UI交互呈现数据,处理应尽可能低于此
标签: vb.net winforms datagridview