-3

C# の Windows フォームに問題があります。プログラムは単純です。3 つのテキスト ボックスがあり、それらの値を合計します。ただし、他の 3 つのテキスト ボックスに値を入力せずに合計ボタンをクリックすると、プログラムがクラッシュします。

これらのテキストボックスが正の数とゼロのみを受け入れるようにするにはどうすればよいですか? これは私がしたことです

    private void button1_Click(object sender, EventArgs e)
    {
        double FirstNumb = Convert.ToDouble(txtFirstValue.Text);
        double SecondNumb = Convert.ToDouble(txtSecondValue.Text);
        double ThirdNumb = Convert.ToDouble(txtThirdValue.Text);

        double m;

        m = FirstNumb + SecondNumb + ThirdNumb;
        listBox1.Items.Add(m);


    }
4

3 に答える 3

1

を使用して解決してみてくださいint.TryParse。これは文字列も処理します。

デモ リファレンス

于 2013-05-15T17:44:55.397 に答える
1

テキスト ボックスのテキスト コンテンツを int に変換しようとしている可能性があります。残念ながら、空の文字列を数値に変換することはできません。テキストボックスのデフォルトのコンテンツを「0」に設定してみてください。

于 2013-05-15T17:45:14.057 に答える
0

テキスト ボックスの文字列値が null や空でないこと、または無効でないことを確認する必要があります。この行を変更します。

double FirstNumb = Convert.ToDouble(txtFirstValue.Text);

これに

double FirstNumb = 0;
double.TryParse(txtFirstValue.Text, out FirstNumb);

解析が失敗した場合、FirstNumb は 0 のままになります。TryParse は bool を返すことに注意してください。解析が成功した場合は true、それ以外の場合は false です。また、ユーザーに値を入力するように求める MessageBox を表示し、summation メソッドを終了するなどのアクションを実行することもできます。

詳細については、ドキュメントを参照してください: http://msdn.microsoft.com/en-us/library/994c0zb1(v=vs.100).aspx

編集: 正の値のみを適用する場合は、try 解析後に FirstNumb >= 0 であることを確認し、MessageBox を使用してユーザーに理由を警告し、合計メソッドを中止する必要があります。

于 2013-05-15T18:27:43.110 に答える