textboxに半角数字以外の文字が入ることを防ぎたい への返答
投稿で使用できる特殊コードの説明。(別タブで開きます。)
以下の返答は逆順(新しい順)に並んでいます。
投稿者 もちだ  (社会人)
投稿日時
2011/3/17 14:32:10
MaskedTextBox使って、ボタン押したときにStrconvで
半角変換かけてしまえば楽なような……。
半角変換かけてしまえば楽なような……。
投稿者 shu  (社会人)
投稿日時
2011/3/17 08:50:33
魔界の仮面弁士さんの回答を見て以下を実行
Dim a = "1234" '--- 全角数字です。
Dim blnIsNumeric = IsNumeric(a)
Dim intA = CInt(a)
Dim intB = 0
Dim blnTryParse = Integer.TryParse(a, intB)
blnIsNumeric = True
intA = 1234
blnTryParse = False
intB = 0
となりました。
つまり魔界の仮面弁士さんの方法で判断しないと半角数字に限定出来ないです。
Dim a = "1234" '--- 全角数字です。
Dim blnIsNumeric = IsNumeric(a)
Dim intA = CInt(a)
Dim intB = 0
Dim blnTryParse = Integer.TryParse(a, intB)
blnIsNumeric = True
intA = 1234
blnTryParse = False
intB = 0
となりました。
つまり魔界の仮面弁士さんの方法で判断しないと半角数字に限定出来ないです。
投稿者 魔界の仮面弁士  (社会人)
投稿日時
2011/3/16 18:46:30
修正箇所については既に回答が付いているので、別の視点から。
たとえば、IsNumeric("9876543210") は True ですが、CInt("9876543210") はエラーとなります。
IsNumeric が True であっても、CInt できない場合がありますので、数値チェックをしたいなら、
IsNumeric ではなく、Integer.TryParse メソッドを利用された方が良いかと思います。
・TryParse メソッドを使った例
http://homepage1.nifty.com/rucio/main/Toukou/T9_BMI.htm
もしくは、TextBox の代わりに NumericUpDown を使うという手もあります。
NumericUpDown コントロールであれば、数値以外の値は入力できませんし、
上限値や下限値も設定しておくこともできます。
たとえば、IsNumeric("9876543210") は True ですが、CInt("9876543210") はエラーとなります。
IsNumeric が True であっても、CInt できない場合がありますので、数値チェックをしたいなら、
IsNumeric ではなく、Integer.TryParse メソッドを利用された方が良いかと思います。
・TryParse メソッドを使った例
http://homepage1.nifty.com/rucio/main/Toukou/T9_BMI.htm
もしくは、TextBox の代わりに NumericUpDown を使うという手もあります。
NumericUpDown コントロールであれば、数値以外の値は入力できませんし、
上限値や下限値も設定しておくこともできます。
投稿者 shu  (社会人)
投稿日時
2011/3/16 17:41:07
とくまさんの言うとおりですが、AndAlsoだとなおよし。
ちなみにMessageBoxの引数は最初がメッセージで2番目がタイトルなので
『注意』とメッセージ欄に表示されると思います。
ちなみにMessageBoxの引数は最初がメッセージで2番目がタイトルなので
『注意』とメッセージ欄に表示されると思います。
投稿者 とくま  (社会人)
投稿日時
2011/3/16 16:09:51
& を And にして下さい。
投稿者 うわー  (社会人)
投稿日時
2011/3/16 15:16:49
VB2010使用です。
現在、タイマー作成中です。問題のコードは以下のとおり。
If IsNumeric(TextBox2.Text) & IsNumeric(TextBox1.Text) Then
SpanTime = CInt(TextBox2.Text) * 60 + CInt(TextBox1.Text)
Me.DialogResult = Windows.Forms.DialogResult.OK
Me.Close()
Else
MessageBox.Show("注意", "半角数字で入力してください", MessageBoxButtons.OK)
End If
テキストBOXに数字以外の文字を入れてOKを押すと、「半角数字で入力してください」という感じにしたいのですが、一行目で引っかかります。
これはエラー処理というものを使わないとだめなのでしょうか?
IsNumericではString型をBooleanに変えることはできないことはエラーメッセージで分かっているのですが、どういう型に変えればいいのかがわかりません。
ちなみに私が知っている型はInteger,Boolean,String です。
現在、タイマー作成中です。問題のコードは以下のとおり。
If IsNumeric(TextBox2.Text) & IsNumeric(TextBox1.Text) Then
SpanTime = CInt(TextBox2.Text) * 60 + CInt(TextBox1.Text)
Me.DialogResult = Windows.Forms.DialogResult.OK
Me.Close()
Else
MessageBox.Show("注意", "半角数字で入力してください", MessageBoxButtons.OK)
End If
テキストBOXに数字以外の文字を入れてOKを押すと、「半角数字で入力してください」という感じにしたいのですが、一行目で引っかかります。
これはエラー処理というものを使わないとだめなのでしょうか?
IsNumericではString型をBooleanに変えることはできないことはエラーメッセージで分かっているのですが、どういう型に変えればいいのかがわかりません。
ちなみに私が知っている型はInteger,Boolean,String です。
NumericUpdownを使うことにしました。