嗨,我是编程新手。管理上个月制作一个有用的程序,现在我做了稍大的事情 - DataGridviews正在伤害我的头脑。我的Datagridview没有绑定到数据库。简而言之,我有两个不同形式的两个DataGridviews-一个基本上是一个字典 - 另一个是数据条目表(有点像excel)。 DataEntry Datagrid Cross引用Dictionary Datagrid。我有这个工作,但我需要做的是 - 如果数据条目表中的数据单元格在编辑后不在字典中,那么它将不会转到另一个单元格(IE。卡在该单元格中,直到正确的字典值为我现在可以说msgbox"不在词典中#34;但是我的代码不允许移出单元格 -
这是代码
Private Sub dataGridView1_CellEndEdit(ByVal sender As Object,
ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) _
Handles DataGridView1.CellEndEdit
Dim Row As Integer = DataGridView1.CurrentRow.Index
Dim temp As Integer = 0
Try
For i As Integer = 0 To FormGeoDicLith.DataGridViewDicLith.RowCount - 1
'this code references a column in the datagrid dictionary to see if the correct value has been added to the data entry datagrid
If DataGridView1.Rows(Row).Cells(2).Value = FormGeoDicLith.DataGridViewDicLith.Rows(i).Cells(1).Value Then
MsgBox("Item found")
temp = 1
End If
Next
If temp = 0 Then
'this is the problem area
DataGridView1.Rows(Row).Cells(2).Selected = True
MsgBox("Code Not In Dictionary")
Exit Sub
End If
Catch ex As Exception
End Try
End Sub
问题是DataGridView1.Rows(Row).Cells(2).Selected = True虽然它看起来像是选择了单元格 - 然后它只是取消选择而且我没有像我想要的那样被困在单元格中输入正确的字典项。非常感谢帮助。
答案 0 :(得分:0)
您可以使用在单元格失去输入焦点时发生的DataGridView.CellValidating Event,从而启用内容验证。
例如:
Private Sub DataGridView1_CellValidating(sender As Object, e As System.Windows.Forms.DataGridViewCellValidatingEventArgs) _
Handles DataGridView1.CellValidating
If e.FormattedValue < 0 Or e.FormattedValue > 20 Then
MsgBox("Please specify a valid value between 0 and 20.")
e.Cancel = True
End If
End Sub
您只能按e.ColumnIndex
验证特定的列过滤。
答案 1 :(得分:0)
我在 -
取得了一些进展DataGridView1.CurrentCell = DataGridView1.Rows(Row).Cells(2)
MsgBox("Code Not In Dictionary")
DataGridView1.BeginEdit(True)
开始编辑功能确实将我拉回到单元格,尽管选择了下一个单元格,然后将其拉回到正确的单元格并进入编辑模式。如果我不断输入错误值/最终由于某种原因没有选择单元格,那么在Msgbox之后需要按两次输入键而不是一次输入键。