2012-10-21 4 views
5

アルファベットと特殊文字を無効にする方法がわからないので、Visual Basic.NETでアルファベット文字と特殊文字を無効にする

Iユーザが数字を入力できるようにします。このコードイムを使用して

イムはそれを行うための簡単な方法があると知っていると、すべてのヘルプは私がメッセージボックスI入力英字とするとき、私は入力番号を取得

を高く評価しています。私は数字を入力するときにメッセージボックスを取得したくない。

Private Sub TextBox1_KeyPress(sender As Object, _ 
           e As KeyPressEventArgs) Handles TextBox1.KeyPress 
    e.Handled = Not Char.IsNumber(e.KeyChar) 
End Sub 

しかし、これは、クリップボードを使用してから誰かを停止することはありません。

Private Sub txtCustom_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtCustom.KeyDown 

    If (e.KeyCode = Keys.Enter) Then 

     e.SuppressKeyPress = True 

     If (e.KeyCode = Keys.A Or Keys.B Or Keys.C Or Keys.D Or Keys.E Or Keys.F Or Keys.G Or Keys.H Or Keys.I Or Keys.J Or Keys.K Or Keys.L Or Keys.M Or Keys.N Or Keys.O Or Keys.P Or Keys.Q Or Keys.R Or Keys.S Or Keys.T Or Keys.U Or Keys.V Or Keys.W Or Keys.X Or Keys.Y Or Keys.Z) Then 

      Beep() 
      MsgBox("Please Input A Numerical Value") 
      txtCustom.Text = "" 

     Else 

      RandNumAllow = txtCustom.Text 

     End If 

    End If 

End Sub 
+1

このコードを許可したいものは何でも文字でcharractersAllowedの値を置き換えることができますが、キー入力し、その場合にはcharが文字であることができなかったと入力した場合にのみ動作するようです。正しいコードを掲載してもよろしいですか? – Steve

+1

そのようなユーザーを罰するプログラムよりも迷惑なことはありません。それは小さな電気ショックをかけるようなもので、ユーザーはすぐにそれにうんざりします。代わりに、Validatingイベントを使用して、Decimal.TryParse()と入力して確認します。 ErrorProviderは微妙なエラー表示を提供します。 –

答えて

7

ではなく、KeyPressイベントを使用してみてください。代わりにMaskedTextBoxコントロールを使用する方が良いでしょう。

+0

私はマスクされたテキストボックスを使用することに決めました。それは、助けてくれてありがとうございました。私はそれを望んでいましたが、とても感謝しました。 –

+0

これは(シャツ+数字)特殊文字をブロックしません。 – jcaruso

+0

これにより、削除とバックスペースも無効になります。どのように有効にすることができますか? –

1

このコードは、TextChangedイベントを使用して試してみると、クリップボードからコピーし、特殊文字のシフト+数値をすべて解決することができます。

Dim charactersAllowed As String = "1234567890" 
     Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged 
    Dim theText As String = TextBox1.Text 
    Dim Letter As String 
    Dim SelectionIndex As Integer = TextBox1.SelectionStart 
    Dim Change As Integer 
    For x As Integer = 0 To TextBox1.Text.Length - 1 
     Letter = TextBox1.Text.Substring(x, 1) 
     If charactersAllowed.Contains(Letter) = False Then 
      SystemSounds.Beep.Play() 
      theText = theText.Replace(Letter, String.Empty) 
      Change = 1 
     End If 
    Next 
    TextBox1.Text = theText 
    TextBox1.Select(SelectionIndex - Change, 0) 
End Sub 

あなたは