Не ~ совсем ~ уверен, что я следую, но, возможно, что-то вроде ниже приведет вас туда, где вам нужно быть.
Label1 сообщает пользователю, является ли то, что они вводят, действительным или недействительным, когда они нажмите Enter. Если действительный и ввод повторяется снова, он добавляется в ListBox1 (сетка в вашем случае). После того, как запись сделана, если они нажмут «», он перейдет go в режим «редактирования». Если они напечатают что-нибудь еще, все будет сброшено, и ввод «» ничего не даст.
Private EntryAdded As Boolean = False
Private ValidEntryMade As Boolean = False
Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
Label1.Text = ""
ValidEntryMade = False
End Sub
Private Sub TextBox1_KeyUp(sender As Object, e As KeyEventArgs) Handles TextBox1.KeyUp
If e.KeyCode = Keys.Enter Then
If Not ValidEntryMade Then
ValidEntryMade = IsValid(TextBox1.Text)
Label1.Text = If(ValidEntryMade, "Valid", "Invalid")
Else
ListBox1.Items.Add(TextBox1.Text)
TextBox1.Clear()
ValidEntryMade = False
EntryAdded = True
End If
End If
End Sub
Private Sub TextBox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox1.KeyPress
If EntryAdded AndAlso e.KeyChar = "*" Then
e.Handled = True
TextBox1.Clear()
MessageBox.Show("Editing")
End If
EntryAdded = False
End Sub
Private Function IsValid(ByVal entry As String) As Boolean
' ... however you do this ...
Return (entry.Length = 6)
End Function