dポイントプレゼントキャンペーン実施中!

テキストボックスによる数値入力の制限で困っています。
LEDの点灯とモーターの動作のチェックプログラムを作り
完成したのですが、いろいろとネットで調べ
下記のプログラムでテキストボックスの数値入力を作成したのですが、

作成プログラム
Dim bKeyNum As Boolean = Char.IsDigit(e.KeyChar)
If bKeyNum <> True Then
e.Handled = True
End If

この方法ではBack Spaceキーが効かないため上司から使いづらいので
キーが効くようにしてほしいと要望があり、
もう一度探しましたが、どれも記述どおりにやっても
うまく動きません。
何か私に分かりやすく説明をしてくれて簡単に数値入力と
Back Spaceキーが使えるプログラムを教えてください。
よろしくお願いします。

A 回答 (2件)

BackSpaceが動いたら、今度は左右キーやDeleteキーも・・・という要求が出そうですね。


なので、下記のように 数字とコントロール文字以外は Handled = True となる式を作ればよいと思います。

Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
e.Handled = Not (Char.IsDigit(e.KeyChar) OrElse Char.IsControl(e.KeyChar))
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございました。
解決ができました。
これで上司に文句を言われづにすみそうです。

なるほど、Char.IsContorolというのがBack Space等の
コントロールキーに対するメソッドになるわけですね。
これから行くと英文字やカタカナ、漢字等のメソッドも
あるのでしょうか。

お礼日時:2009/11/22 01:32

Char構造体のSharedメソッドにおけるIs***メソッドは特定の文字の種類を判別するメソッドです。

これ以外の文字については、GetUnicodeCategoryで文字コードのカテゴリを取得できます。
それ以外の文字は、文字コードから判断します。

詳しくはMSDNに丸投げ。


あとついでに気づいたことを。
現状だとペーストは可能だと思います。
.NET 2.0以降であればTextboxのShortcutsEnabledをFalseにすることでショートカットによる操作とコンテキストメニュー(右クリックメニュー)を無効にします。
    • good
    • 0
この回答へのお礼

ショートカットキーについてもありがとうございました。
確かにFalseにするのを忘れていました。
さっそく直しておきました。

MSDNでGetUnicodeCategoryを詳しく調べてみます。
Wizard_Zeroさん、
いろいろとご教授ありがとうございました。

お礼日時:2009/11/23 22:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!