使用数字向上和向下的按键数据输入更新数据网格视图中的值

Updating Values in a Data Grid View With Key Press Data Entry in Numeric Up and Down

我正在设置一个包含项目列表的数据网格视图,其中一列是项目编号 (1, 2, 3),第二个数字是项目的名称。我使用数字向上和向下控制项目编号列的输入,所以当我增加它时,行被添加并且项目编号列自动更新(因此用户不必输入它)。但是,这仅在我通过单击箭头上下使用数字时才有效。如果我输入数字(比如 4 个项目),我会得到一个异常 (System.ArgumentOutOfRangeException: 'Index was out of range. Must be non-negative and less than the size of the collection. 参数名称:index') 并且该过程不起作用。代码如下:

Private Sub numItemNumber_ValueChanged(sender As Object, e As EventArgs) Handles numItemNumber.ValueChanged
     While (dgvItems.Rows.Count < numItemNumber.Value)
        dgvItems.Rows.Add()
        i = numItemNumber.Value
        dgvItems.Rows(i).Cells(0).Value = i + 1  'This is where the exception is
    End While
   End Sub

我添加了一个 KeyPress 事件以查看它是否可以处理输入的项目,但它不能。

 Private Sub numItemNumber_KeyPress(sender As Object, e As EventArgs) Handles numItemNumber.KeyPress
    For i = 0 To numItemNumber.Value - 1
        dgvItems.Rows(i).Cells(0).Value = i + 1
    Next
End Sub

我如何编辑它以包括这两个事件(用户使用上下键或直接输入数字)?谢谢。

难道您还需要先添加新行才能在其中输入值吗?

Private Sub numItemNumber_KeyPress(sender As Object, e As EventArgs) Handles numItemNumber.KeyPress
For i = 0 To numItemNumber.Value - 1
    dgvItems.Rows.Add()
    dgvItems.Rows(i).Cells(0).Value = i + 1
Next

结束子

发现这是可行的,本质上是在 Value Changed 事件中添加一个遍历数据网格视图行的循环,以便它可以处理任何大于 0 的数字。在此处为可能需要它的任何人添加代码:

Private Sub numItemNumber_ValueChanged(sender As Object, e As EventArgs) Handles numItemNumber.ValueChanged
 While (dgvItems.Rows.Count < numItemNumber.Value)
    For i=0 to numItemNumber.Value-1
         dgvItems.Rows.Add()
         dgvItems.Rows(i).Cells(0).Value = i + 1  
    Next
  End While
End Sub

不需要按键事件。