2

私は C# Windows アプリケーション 2010 Express を使用しています。ここには、合計料金、支払額、支払額用の 3 つの textBoxes があります。合計料金はDBから取得する必要があり、支払った金額はユーザーが入力する必要があり、支払額はシステムによって計算される必要があります。これが私のシナリオです。合計料金の列に入力したことを意味する最初の部分を行いました。しかし、2番目と3番目の部分で、「formatException was unhandled Input string was not in a correct format.」という例外が発生しました。実際、入力した支払額を消去しているときにこのエラーが発生します。実際の使用では、ユーザーが間違った値を入力した場合にその値を消去できないことを意味します。私のコードを調べて修正してください。

これは私のコード:-

 private void textBox4_TextChanged(object sender, EventArgs e)
    {
        textBox5.Text = "";
        int due = 0;
        due = Convert.ToInt32(textBox3.Text) - Convert.ToInt32(textBox4.Text);
        if (textBox5.Text == null)
        {
            textBox5.Text = Convert.ToString(0);
        }
        else
        {

            textBox5.Text = Convert.ToString(due);
        }
    }
4

3 に答える 3

2

使用することをお勧めしますSimpleType.TryParse

 decimal amount,fees,due;

 decimal.TryParse(textBox3.Text,out amount);
 decimal.TryParse(textBox4.Text,out fees);

 due = amount - fees;

 textBox5.Text= due.ToString("N");

文字列が正常に変換された場合、メソッドSimpleType.TryParseは戻ります。それ以外の場合は を返します。truefalse

例えば、

if(decimal.TryParse(textBox3.Text,out amount))
  //Valid
else
 //Invalid input
于 2012-10-06T05:10:30.650 に答える
0

空または数値以外の文字列を渡すConvert.ToInt32と、フォーマット例外が発生します。文字列は数値でなければなりません。textbox3またはtextbox4のテキストに空の文字列があるか、数値ではない

代わりに Int32.TryParse を使用してください http://msdn.microsoft.com/en-us/library/f02979c7.aspx

于 2012-10-06T05:02:48.737 に答える
0

textBox3およびには数値のみを許可する必要があります。これは、数値のみが必要なtextBox4ためConvert.ToInt32です。

ユーザーが無効な入力を入力したときの状況をよりきめ細かく制御できるInt32.Parse()ため、を使用することをお勧めします。

またTryParse、常に例外を単独で処理するため、最適です。

due = Int32.TryParse(textBox3.Text, out amount) - 
      Int32.TryParse(textBox4.Text, out fees);
于 2012-10-06T05:11:58.767 に答える