• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:テキストボックスの数値入力制限)

テキストボックスの数値入力制限を解決する方法

このQ&Aのポイント
  • テキストボックスによる数値入力の制限で困っています。LEDの点灯とモーターの動作のチェックプログラムを作成しましたが、テキストボックスの数値入力がうまく制限できません。
  • 上司からの要望で、数値入力の制限を簡単にし、Back Spaceキーが使えるプログラムを探していますが、うまく見つかりません。分かりやすい説明と共に、解決策を教えてください。
  • Back Spaceキーが効かない制限付きの数値入力テキストボックスを作成したいです。効果的な方法やプログラムの書き方を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

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

kou1012
質問者

お礼

ありがとうございました。 解決ができました。 これで上司に文句を言われづにすみそうです。 なるほど、Char.IsContorolというのがBack Space等の コントロールキーに対するメソッドになるわけですね。 これから行くと英文字やカタカナ、漢字等のメソッドも あるのでしょうか。

その他の回答 (1)

回答No.2

Char構造体のSharedメソッドにおけるIs***メソッドは特定の文字の種類を判別するメソッドです。これ以外の文字については、GetUnicodeCategoryで文字コードのカテゴリを取得できます。 それ以外の文字は、文字コードから判断します。 詳しくはMSDNに丸投げ。 あとついでに気づいたことを。 現状だとペーストは可能だと思います。 .NET 2.0以降であればTextboxのShortcutsEnabledをFalseにすることでショートカットによる操作とコンテキストメニュー(右クリックメニュー)を無効にします。

kou1012
質問者

お礼

ショートカットキーについてもありがとうございました。 確かにFalseにするのを忘れていました。 さっそく直しておきました。 MSDNでGetUnicodeCategoryを詳しく調べてみます。 Wizard_Zeroさん、 いろいろとご教授ありがとうございました。

関連するQ&A