• ベストアンサー

C#でTextBoxに数値のみ入力可能とする方法

C#の超初心者です。C#.NETでWindows環境下でプログラム開発を行っています。TextBoxで数値のみ入力可能にする方法を教えてください。

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

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e) { if(!('0' <= e.KeyChar && e.KeyChar <= '9')) e.Handled=true; } keyPressイベントで Handled に true を設定すれば、キャンセルできます。 小数点のチェックを入れる場合は、チェックをもう少し考えないといけません

teramakashi
質問者

お礼

ありがとうございました。小数点とエンターキーの判定も追加できました。

その他の回答 (3)

  • hpp
  • ベストアンサー率64% (22/34)
回答No.4

すみません。ボケてましたね。 textBox1.Text.Replace(e.KeyChar,'') 空のリテラルでコンパイルさえ通らないですね。それにKeyPressイベントの段階ではまだtextBox1.Textの内容は古いままで書き換わってませんね。 普段私は正規表現とデータベース更新時にまとめて入力項目をチェックしますので、思い込みでKeyPressイベントについて考察してしまいました。 以後、動作確認、もしくは動作確認できなければそれを明記するように気をつけたいと思います。お恥ずかしい限りです。

teramakashi
質問者

お礼

ご意見、参考にさせていただきました。ありがとうございました。

  • hpp
  • ベストアンサー率64% (22/34)
回答No.2

keypressイベントでチェックし、入力された1文字を消すということは可能です。e.KeyCharをチェックし、違反していれば、 textBox1.Text.Replace(e.KeyChar,'') みたいな感じで良いでしょう。しかし、貼り付けされることもあります。 なので、Leaveイベントでチェックするか、データ更新など何らかアクションを起こしたときに、errorProviderを使ってまとめてチェックした方が堅いと思います。もっとも両イベントでチェックしても良いとは思います。

  • hpp
  • ベストアンサー率64% (22/34)
回答No.1

特にプロパティには用意されていないようなので、 using System.Text.RegularExpressions; Regex regex09 = new Regex("^[0-9]+$"); if (regex09.IsMatch(texBox1.Text) { } といった具合に正規表現で判断すれば良いでしょう。

teramakashi
質問者

補足

ありがとうございます。正規表現に違反している場合はキー入力をキャンセルしたいのですが、どうしたらよろしいのでしょうか?KeyPressイベントは使えますか?

関連するQ&A