- ベストアンサー
数字のみの入力制限をかけた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
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
申し訳ない、単純なのに間違っていました。 多分こうでしょう。 これに#2さんの言われる文法に改造してみてください。 If (e.KeyChar < "0"c Or e.KeyChar > "9"c) And e.KeyChar <> "."c And e.KeyChar <> vbBack Then #2さんありがとうございます。 VB.NETは触ったことないので参考になりました。
その他の回答 (3)
- Kuppycat
- ベストアンサー率50% (109/216)
VB6.0の環境しかないので憶測ですが、 e.KeyChar <> vbDelete(?) を加えてみてはいかがでしょう? VB6.0ではDeleteキーコードで実現するので。 参考とまで。
お礼
ありがとうございます。 ただ、VB.NETでは、"vbDelete"は使えないようです。
- JeanneNet
- ベストアンサー率48% (100/208)
こんにちは、じゃんぬねっと と申します。(毎度のことです) それと、「"."c を加えてダメでした」では解決につながりませんね。 加えてダメであれば、他の条件をすべてコメントアウトして、"."c オンリーで行うなどしてください。 わからないからすべて聞くのではなく、色々試すようにしましょう。 その上でわからなければ、答えを出すしかないですが... (^-^;) > #1の方へ えっと、AndAlso と OrElse にした方が良いですね。
補足
条件をすべてコメントアウトして実行しましたが。 やダメでした。 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)
If (e.KeyChar < "0"c Or e.KeyChar > "9"c Or e.KeyChar = ".") And e.KeyChar <> vbBack Then 単純にこうではいけないのですか?
補足
はい、わたしもそういう指定で大丈夫かとおもいましたが、"."(少数点)が入力許可されませんでした。
お礼
実現しました。 ただ、"1.23.45...68"とか、小数点が複数入力できてしまいますが・・(^^; 小数点を一度しか入力できないように、あとはコードで制限してみたいと思います。 ありがとうございました。