1

コードを使用してテキストボックスで数字のみを取得する方法もわかりました:

 Dim smessage As String = String.Empty

 If Not IsNumeric(Student_IDTextBox.Text) Then
      smessage += "The ID must be Numeric!" + Environment.NewLine
 End If

しかし、このテキストボックスに 2 つの文字と 3 つの数字を入れたいのですが、VB でこれをプログラムする最良の方法を知っていますか?

4

3 に答える 3

2

カスタムマスクでマスクされたテキストボックスを試してください。LLL00 のようなマスクを設定します。このリンクを参照して ください http://msdn.microsoft.com/en-us/library/system.windows.forms.maskedtextbox.mask.aspx

于 2013-10-08T08:24:46.680 に答える
0

ID が 3 つの数字と 2 文字である必要がある場合は、おそらくパターンもあり (多くのナンバー プレートと同様)、単なる文字の種類の数よりも重要です。マスクされたテキスト ボックスは 1 つの方法ですが、数字を数えたり、文字を数えたりするのは別の方法です。

AAA-NN や AAANN などのパターンがある場合、ID を 2 つの入力 (1 つの英字と 1 つの数字) に分割できます。これは、(米国の) 社会保障番号 (NNN-NN-NNNN) などのパターンの ID で行われることがよくあります。RegEx を使用してパターンをテストすることもできます。

これがログインまたはその他のデータベース アプリである場合は、単純にパターンをテストするためのコードを書きすぎるのではなく、エントリをテストします。彼らが入力したものを収集し、単純なクエリを実行して ID が存在するかどうかを確認できます。これは、結局のところ、パターンよりもはるかに重要です。

フォームのラベルで ###AA などを使用するように指示できますが、パターンをテストしてパターン エラーを報告するのはばかげているように思えます。結局のところ、正しいパターンであっても、無効な ID である可能性があります。

于 2013-10-08T11:35:00.323 に答える
0

これは確かに最善の方法ではありませんが、最良の方法は主観的であり、意見だけでなく複数の状況に依存することが多いため、最善の方法を見つけることができるかどうかはわかりません.

名前付きのテキスト ボックスと名前付きtxtinputの結果を表示するラベルlblMessageを想定し、ASCII 文字入力を使用していると仮定します。

あなたが次のような場合に備えてTextChangedtxtinput

'Check if the length is greater than five, if it is truncate it.
If txtinput.Text.Length > 5 Then
    txtinput.Text = Mid(txtinput.Text, 1, 5)
    txtinput.Select(txtinput.Text.Length, 0)
End If

'counters for letters and numbers
Dim letters As Integer = 0
Dim numbers As Integer = 0

'Parse and compare the input
For Each c As Char In txtinput.Text
    If Asc(c) >= 48 And Asc(c) <= 57 Then 'ASCII characters for 0-9
        numbers += 1
    ElseIf Asc(c) >= 65 And Asc(c) <= 90 Then 'ASCII characters for A-Z
        letters += 1
    ElseIf Asc(c) >= 97 And Asc(c) <= 122 Then 'ASCII characters for a-z
        letters += 1
    End If
Next

If letters = 2 And numbers = 3 Then
    lblMessage.Text = "Correct Format"
Else
    lblMessage.Text = "Incorrect Format"
End If

Linq の使用:

If txtinput.Text.Length > 5 Then
    txtinput.Text = Mid(txtinput.Text, 1, 5)
    txtinput.Select(txtinput.Text.Length, 0)
End If

If txtinput.Text.Count(Function(x As Char) Char.IsLetter(x)) = 3 And txtinput.Text.Count(Function(x As Char) Char.IsNumber(x)) = 2 Then
    lblMessage.Text = "Correct Format"
Else
    lblMessage.Text = "Incorrect Format"
End If
于 2013-10-08T15:01:32.263 に答える