使用数字向上和向下的按键数据输入更新数据网格视图中的值
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
不需要按键事件。
我正在设置一个包含项目列表的数据网格视图,其中一列是项目编号 (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
不需要按键事件。