2

テキストボックスが空ではなく、入力された数が2000を超えないようにする検証イベントを作成しようとしています。私が持っているものを投稿しましたが、実行するたびに例外というメッセージが表示されます「kwh = decimal.Parse(khtextBox.Text)」入力が正しい形式ではないため、処理されませんでした。私のやり方では、数値が 2000 を超えると検証が機能しますが、テキスト ボックスが空白の場合は機能しません。私は何を間違っていますか?プログラミングも初めてなので、3歳児に話しかけるように説明してください!ありがとう :)

private void khtextBox1_Validating(object sender, CancelEventArgs e)
{
        decimal kwh;
        kwh = decimal.Parse(khtextBox1.Text);
        bool blank = false;

        if (blank)
        {
            MessageBox.Show("Please enter a valid number.");
        }

        if (kwh > 2000)
        {
            MessageBox.Show("Kilowatt-Hours cannot exceed 2000.");
            e.Cancel = true;
        }
}
4

2 に答える 2

3

サンプルとして、 を 10 進数に変換し、変換が成功した場合は bool 値を返すdecimal.TryParseメソッドを使用してみてください。string

decimal kwh;
if (!decimal.TryParse(khtextBox1.Text, out kwh)) // check if the conversion has failed
{
   MessageBox.Show("Please enter a valid number.");
   e.Cancel = true;
}
else // conversion ok, you can use the kwh value
{    
   if (kwh > 2000)
   {
      MessageBox.Show("Kilowatt-Hours cannot exceed 2000.");
      e.Cancel = true;
   }
}
于 2014-09-13T19:38:22.017 に答える
0

問題が何であるかを明確に述べています。入力は、10 進数に変換できるものでなければなりません。

間違った入力の問題のようです。代わりに TryParse を使用してみてください。または、2 番目の「if」ブロックを単に「else if」に変更することもできます。

decimal outputKWH;
kwh = decimal.TryParse(khtextBox.Text, out outputKWH)
于 2014-09-13T19:42:41.130 に答える