- ベストアンサー
テキストボックスの数値入力制限を解決する方法
- テキストボックスによる数値入力の制限で困っています。LEDの点灯とモーターの動作のチェックプログラムを作成しましたが、テキストボックスの数値入力がうまく制限できません。
- 上司からの要望で、数値入力の制限を簡単にし、Back Spaceキーが使えるプログラムを探していますが、うまく見つかりません。分かりやすい説明と共に、解決策を教えてください。
- Back Spaceキーが効かない制限付きの数値入力テキストボックスを作成したいです。効果的な方法やプログラムの書き方を教えてください。
- みんなの回答 (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
その他の回答 (1)
- うぃず(@Wizard_Zero)
- ベストアンサー率69% (344/495)
Char構造体のSharedメソッドにおけるIs***メソッドは特定の文字の種類を判別するメソッドです。これ以外の文字については、GetUnicodeCategoryで文字コードのカテゴリを取得できます。 それ以外の文字は、文字コードから判断します。 詳しくはMSDNに丸投げ。 あとついでに気づいたことを。 現状だとペーストは可能だと思います。 .NET 2.0以降であればTextboxのShortcutsEnabledをFalseにすることでショートカットによる操作とコンテキストメニュー(右クリックメニュー)を無効にします。
お礼
ショートカットキーについてもありがとうございました。 確かにFalseにするのを忘れていました。 さっそく直しておきました。 MSDNでGetUnicodeCategoryを詳しく調べてみます。 Wizard_Zeroさん、 いろいろとご教授ありがとうございました。
お礼
ありがとうございました。 解決ができました。 これで上司に文句を言われづにすみそうです。 なるほど、Char.IsContorolというのがBack Space等の コントロールキーに対するメソッドになるわけですね。 これから行くと英文字やカタカナ、漢字等のメソッドも あるのでしょうか。