4

こんにちは、Windows Phone 8 アプリケーションを使用していますが、例外が発生しました。

タイプ 'System.FormatException' の例外が mscorlib.ni.dll で発生しましたが、ユーザー コードで処理されませんでした

ここにコードがあります

  private void Button_Click_1(object sender, RoutedEventArgs e)
    {
        double basestolen;
        double attempedstales;
        double avarege;
        double putout;




         if (puttext.Text.Length == 0 | basetext.Text.Length==0 )
        {

            MessageBox.Show(" Enter Values for Base Stolen and Putouts ");

        }

         basestolen = Convert.ToDouble(basetext.Text);
        putout = Convert.ToDouble(puttext.Text);



        attempedstales = basestolen + putout;


        if (attempedstales != 0  )
        {

            avarege = (((basestolen / attempedstales) / 100));
            avarege = avarege * 10000;
            avgtext.Text = Convert.ToString(avarege);


        }
        else
        {
            MessageBox.Show("Attemped Stales Value should not be Zero");
        }



    }

アプリケーションが実行され、テキストボックスに値を入力しないとメッセージボックスが返されますが、その後アプリケーションは停止して上記のexptionを返しますか? 何が問題ですか?

4

2 に答える 2

3

エラーはおそらくここにあります:

basestolen = Convert.ToDouble(basetext.Text);
putout = Convert.ToDouble(puttext.Text);

数値が有効な形式でない場合、FormatException がスローされます。(詳細はこちら)。double.TryParseを使用して、安全な方法で値を解析してみてください。

double result;    
bool success = double.TryParse(basetext.Text, NumberStyles.Any, CultureInfo.InvariantCulture, out result);
于 2013-05-27T12:29:23.143 に答える
0

メッセージ ボックスを表示した後、メソッドの実行を停止するのを忘れました。

if (puttext.Text.Length == 0 || basetext.Text.Length==0 )
{
    MessageBox.Show(" Enter Values for Base Stolen and Putouts ");
    return;
}

また、文字列を double に変換する場合は、必ずカルチャを指定してください。Windows Phone アプリケーションは世界中のユーザーによって実行され、一部の国では異なる小数点記号が使用されます。例えば:

basestolen = Convert.ToDouble(basetext.Text, CultureInfo.InvariantCulture);
于 2013-05-27T12:24:27.780 に答える