1


0

WPF C#文字列から10進数、10進数から文字列への問題

C#コード(WPF、イベントハンドラー)の問題を特定するのを手伝ってください:

        private void Discount5Btn_Click(object sender, RoutedEventArgs e)
    {
        decimal catPr;
        decimal salePr;
        string catPrStr;
        catPrStr = PriceCatTBox.Text;
        catPr = decimal.Parse(catPrStr);
        salePr = decimal.Multiply(catPr, 0.95m);
        SalePriceTBox.Text = (salePr).ToString("0000.00");
    }

私はそれを動作させることができません-デバッガは `catPr = decimal.Parse(catPrStr);`でエラーを表示します。 別の場所で非常によく似たコードが機能します。 そして、私は算術演算のための文字列10進数変換へのそのようなアプローチで正しいですか?

編集(追加)

`catPrStr`の値を指定しないで申し訳ありませんが、次のコードのテキストボックス(別のイベントハンドラー)からのものです。

dlg.PriceCatTBox.Text = "2300.00";
and then as above:

catPrStr = PriceCatTBox.Text;


4 Answer


3


_ そして、私は算術演算のための文字列10進数変換へのそのようなアプローチで正しいですか? _

10進値を保存するために、モデルとの双方向バインドを設定します。 これにより、文字列を解析する代わりに、それらに直接アクセスできます。 これもエラーを解決します。


3


文化(ロケール)設定が干渉していないことを確認しますか? catPrStr`が編集した質問に表示される不変カルチャに常にある場合、 decimal.TryParse(catPrStr、CultureInfo.InvariantCulture); `を使用して、そのカルチャの使用を強制できます。 カルチャが指定されていない場合、現在のシステムカルチャで解析が行われます。たとえば、小数点記号としてコンマを使用する場合があります。


1


catPrStr`の値がわからないため、私たちはあなたを助けることができません。あなたは String`から `Decimal`に変換しており、変換される文字列の値が間違っている可能性が高いです。


1


`decimal.TryParse(catPrStr、out catPr);`そして、そこから返されるブール値を処理して、処理する妥当な値があることを確認します。