VB如果验证(CellEndEdit失败,则使DataGridView保持在同一个单元格上)

时间:2015-09-22 14:31:58

标签: vb.net datagridview

嗨,我是编程新手。管理上个月制作一个有用的程序,现在我做了稍大的事情 - 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虽然它看起来像是选择了单元格 - 然后它只是取消选择而且我没有像我想要的那样被困在单元格中输入正确的字典项。非常感谢帮助。

2 个答案:

答案 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之后需要按两次输入键而不是一次输入键。