【问题标题】:How to add Number to Value in Textbox from DataGridView based on Keyword如何根据关键字从 DataGridView 将数字添加到文本框中的值
【发布时间】: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


【解决方案1】:

当我们计数时,我们从一开始,所以Count 从一开始。它告诉我们有多少行。 .net 中的索引从零开始。如果我们有 7 行,则索引将是 0 到 6。鉴于此,在 For 循环中使用 Count 时一定要记住减号。

DataGridView 中CellValue 属性返回Object。您必须将值更改为 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

【讨论】:

  • 谢谢!! (同样作为初学者,count's 与DataGridView 关系的解释很棒!!)
猜你喜欢
  • 1970-01-01
  • 2021-06-30
  • 2017-04-22
  • 2020-06-23
  • 2018-07-08
  • 2016-10-29
  • 1970-01-01
  • 2018-03-22
  • 1970-01-01
相关资源
最近更新 更多