我正在尝试验证放置在TextBox
内的字符数,但遇到了一些麻烦。我正在使用的代码如下:
If Not ((TextBox5.Text.Length) <= 1) Or ((TextBox5.Text.Length) >= 10) Then
MsgBox("Invalid date entry. Use the the following format: DD-MM-YYYY.")
TextBox5.Focus()
TextBox5.SelectAll()
Else
'do whatever
End If
我想要的是TextBox5
的长度介于1和10之间(如果不是,请重新选择TextBox
,以便为其他用户输入做好准备。
代码对小于1的输入响应良好,但无法识别任何大于10个字符的输入。我看不出我做错了什么?
答案 0 :(得分:2)
首先,请勿致电Focus
。文档明确指出,请勿致电Focus
。如果要聚焦控件,可以调用其Select
方法。
你不需要打电话。您应该处理Validating
事件,如果控件未通过验证,则将e.Cancel
设置为True
,控件不会首先失去焦点。
If myTextBox.TextLength < 1 OrElse myTextBox.TextLength > 10 Then
'Validation failed.
myTextBox.SelectAll()
e.Cancel = True
End If
答案 1 :(得分:0)
据我所知,这应该可以解决问题。
注意有几种不同的方法可以完成此任务,但是根据您显示的示例代码,这应该没问题。
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
If TextBox5.Text.Length < 1 Or TextBox5.Text.Length > 10 Then
MsgBox("Invalid date entry. Use the the following format: DD-MM-YYYY.")
TextBox1.SelectAll()
Else
MessageBox.Show("date accepted...")
End If
End Sub
我从按钮点击事件中触发了这个。
答案 2 :(得分:0)
您必须做两件事:
像这样:
Private Sub res_pin_KeyPress(sender As Object, e As KeyPressEventArgs) Handles res_pin.KeyPress
If e.KeyChar = Chr(13) Then
If Me.res_pin.Text.Length < 6 Then
e.Handled = True
Else
Me.res_deposit.Focus()
End If
End If
End Sub