textboxに半角数字以外の文字が入ることを防ぎたい への返答

投稿で使用できる特殊コードの説明。(別タブで開きます。)
本名は入力しないようにしましょう。
投稿した後で削除するときに使うパスワードです。返答があった後は削除できません。
返答する人が目安にします。相手が小学生か社会人かで返答の仕方も変わります。
最初の投稿が質問の場合、質問者が解決時にチェックしてください。(以降も追加書き込み・返信は可能です。)
※「過去ログ」について書くときはその過去ログのURLも書いてください。

以下の返答は逆順(新しい順)に並んでいます。

投稿者 うわー  (社会人) 投稿日時 2011/3/17 20:20:25
皆様、ありがとうございます。
NumericUpdownを使うことにしました。
投稿者 もちだ  (社会人) 投稿日時 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

となりました。

つまり魔界の仮面弁士さんの方法で判断しないと半角数字に限定出来ないです。
投稿者 魔界の仮面弁士  (社会人) 投稿日時 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 コントロールであれば、数値以外の値は入力できませんし、
上限値や下限値も設定しておくこともできます。
投稿者 shu  (社会人) 投稿日時 2011/3/16 17:41:07
とくまさんの言うとおりですが、AndAlsoだとなおよし。

ちなみに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 です。