• ベストアンサー

数字のみの入力制限をかけたTextBoxで、"."の入力も許可したい

環境はVB.NETです。 以下のコードで、TextBoxへの入力を、0~9の数字のみ(BackSpaceも許可)に制限していますが、"."(少数点)の入力も許可したいです。 e.KeyChar = "."c の判定をIf文に追加してみましたが、実現できませんでした。 ご教授いただけると幸いです。 よろしくお願いします。 Private Sub TextBox1_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress  If (e.KeyChar < "0"c Or e.KeyChar > "9"c) And e.KeyChar <> vbBack Then   e.Handled = True  End If End Sub

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

  • ベストアンサー
  • iiikkk
  • ベストアンサー率37% (92/247)
回答No.4

申し訳ない、単純なのに間違っていました。 多分こうでしょう。 これに#2さんの言われる文法に改造してみてください。 If (e.KeyChar < "0"c Or e.KeyChar > "9"c) And e.KeyChar <> "."c And e.KeyChar <> vbBack Then #2さんありがとうございます。 VB.NETは触ったことないので参考になりました。

THUBAN
質問者

お礼

実現しました。 ただ、"1.23.45...68"とか、小数点が複数入力できてしまいますが・・(^^; 小数点を一度しか入力できないように、あとはコードで制限してみたいと思います。 ありがとうございました。

その他の回答 (3)

  • Kuppycat
  • ベストアンサー率50% (109/216)
回答No.3

VB6.0の環境しかないので憶測ですが、 e.KeyChar <> vbDelete(?) を加えてみてはいかがでしょう? VB6.0ではDeleteキーコードで実現するので。 参考とまで。

THUBAN
質問者

お礼

ありがとうございます。 ただ、VB.NETでは、"vbDelete"は使えないようです。

  • JeanneNet
  • ベストアンサー率48% (100/208)
回答No.2

こんにちは、じゃんぬねっと と申します。(毎度のことです) それと、「"."c を加えてダメでした」では解決につながりませんね。 加えてダメであれば、他の条件をすべてコメントアウトして、"."c オンリーで行うなどしてください。 わからないからすべて聞くのではなく、色々試すようにしましょう。 その上でわからなければ、答えを出すしかないですが... (^-^;) > #1の方へ えっと、AndAlso と OrElse にした方が良いですね。

THUBAN
質問者

補足

条件をすべてコメントアウトして実行しましたが。 やダメでした。 Private Sub TextBox1_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress  If (e.KeyChar < "0"c Or e.KeyChar > "9"c Or e.KeyChar = "."c) And e.KeyChar <> vbBack Then   e.Handled = True  End If End Sub ちなみに以下のようにして試してみましたが、ダメでした。  If e.KeyChar = "."c Then   e.Handled = True  End If

  • iiikkk
  • ベストアンサー率37% (92/247)
回答No.1

If (e.KeyChar < "0"c Or e.KeyChar > "9"c Or e.KeyChar = ".") And e.KeyChar <> vbBack Then 単純にこうではいけないのですか?

THUBAN
質問者

補足

はい、わたしもそういう指定で大丈夫かとおもいましたが、"."(少数点)が入力許可されませんでした。

関連するQ&A