プロが教える店舗&オフィスのセキュリティ対策術

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

A 回答 (4件)

private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)


{
if(!('0' <= e.KeyChar && e.KeyChar <= '9'))
e.Handled=true;
}
keyPressイベントで
Handled に true を設定すれば、キャンセルできます。
小数点のチェックを入れる場合は、チェックをもう少し考えないといけません
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/09/20 15:01

すみません。

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

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

お礼日時:2004/09/20 15:02

keypressイベントでチェックし、入力された1文字を消すということは可能です。

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

特にプロパティには用意されていないようなので、



using System.Text.RegularExpressions;

Regex regex09 = new Regex("^[0-9]+$");

if (regex09.IsMatch(texBox1.Text)
{
}
といった具合に正規表現で判断すれば良いでしょう。

この回答への補足

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

補足日時:2004/09/19 14:37
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています