2016-06-20 1 views
0

TextBoxの中に配置されている文字の数を検証しようとしていますが、何らかの問題があります。私がしたいことは、他のユーザの入力のための準備が完了することTextBoxを再選択されていない場合、間の長さ(および含む)の1と10を持っているTextBox5ためであるTextBox.Text.Lengthが1から10の間であることを確認する

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 

次のように私が使用しているコードがあります。

コードは1未満の入力に対しては応答しますが、10文字を超える入力は認識できません。私は何が間違っているのか分かりません。

+2

「Not」の部分を削除しようとしましたか? – Werdna

+0

あなたは「2以下でなければ9」と言っていますが、2番以上のすべてがif文を渡します。 –

答えて

2

まず、Focusに電話しないでください。ドキュメントには、明確に記載されていますが、Focusに電話しないでください。コントロールにフォーカスを当てたい場合は、Selectメソッドを呼び出します。

あなたはどちらかを呼び出す必要はありません。 Validatingイベントを処理する必要があります。コントロールが検証に失敗した場合は、e.CancelTrueに設定すると、コントロールのフォーカスが失われません。

If myTextBox.TextLength < 1 OrElse myTextBox.TextLength > 10 Then 
    'Validation failed. 
    myTextBox.SelectAll() 
    e.Cancel = True 
End If 
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 

これはボタンのクリックイベントから発生します。

関連する問題