DOBON.NET DOBON.NETプログラミング掲示板過去ログ

if文の作り方

環境/言語:[XP、C#]
分類:[.NET]

身長をテキストボックスに入力する時、入力値を0〜300までに設定したいので、下のように作りました。初期値は0にしてあります。
実行すると、初期値の0を消しただけでエラーメッセージがでます。
テキストボックスを空白にしてもエラーがでないようにするには、どうしたらいいでしょうか?


private void textBox_Height_TextChanged(object sender, System.EventArgs e)
{
try
{
 int height = int.Parse( textBox_Height.Text );

 if( height <= -1 )
 {
   textBox_Height.Text = "0";
   MessageBox.Show("入力値が正しくありません");
 }
 else if( 301 <= height)
 {
   textBox_Height.Text = "0";
   MessageBox.Show("入力値が正しくありません");
 }
    }
catch(Exception er)
{
   MessageBox.Show(er.Message);
}
}
  • 題名: Re[1]: if文の作り方
  • 著者: ガッ
  • 日時: 2005/08/10 12:08:40
  • ID: 12146
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
Try-Catchが広すぎるのではないかと…
int.Parse()で例外が起こった場合、
適当な値(たとえば0)にしてしまう様にしてみては?

int height;
Try{
  height = int.Parse( textBox_Height.Text );
}catch(Exception e){
  height=0
}
〜以下略〜
こんにちは、じゃんぬ です。

■No12145に返信(うささんの記事)
> private void textBox_Height_TextChanged(object sender, System.EventArgs e)

まず、TextChanged イベントでやるのはアクセシブルとは言えません。
Validating イベントなどで検証すべきです。

> try {
>   int height = int.Parse( textBox_Height.Text );

例外任せにするのではなく、自作の IsNumeric メソッドを使って検証するか、
Double.TryParse() メソッドを使ってください。
いくつか出ていますが、Regexクラスを使って、入力された値が3桁の数字だけからなることを確認し、それからintにperseして、0から300までかどうかを確認するという方法もあります。
ユーザーは、数字以外の値を入力することも可能だということに注意して下さい。
  • 題名: Re[2]: if文の作り方
  • 著者: うさ
  • 日時: 2005/08/10 13:20:36
  • ID: 12149
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
回答ありがとうございました。

初心者なもので、どうしてこういう形になるのか分かりませんが、ガッさんのソースをそのまま使わせてもらいました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板