0

合計、小計、割引を表示するためにいくつかのテキストボックスを使用しています。テキストボックスで小数を表すために、小数を文字列に変換しています。また、"$"冒頭でお願いします。

私はこれを使用してこれを達成しました:

tbx_total.Text = total.ToString("$ ##0.##");

グラフィカルに、これはうまく機能していますが、私の大きな問題は、他のテキストボックスの値を計算するためにそのテキストボックスの値が必要なことです。基本的に、そのテキストボックスのテキストを10進数に変換しようとすると、実行時にフォーマットエラーが発生します。明らかに、これはToString("$ ##0.##")フォーマットによるものです。フォーマットなしで値を取得する方法はありますか?

4

4 に答える 4

2

簡単な解決策の1つは次のとおりです。

tbx_total.Text = total.ToString("$ ##0.##");
tbx_total.Tag = total;

次に、tbx_total.Tagプロパティを使用してさらに使用します。

于 2013-01-09T15:22:27.290 に答える
1

読み返すときに、NumberStylesを使用して解析し、目的の効果を得ることができます。NumberStylesにはビット単位の演算がいくつかあるので、柔軟性を高めるためにそれらを使用する方法を調査することをお勧めします。

double.Parse(total, NumberStyles.Currency);

また、私は通貨をもう少しフォーマットするためにこれを好む傾向がありますが、純粋に文体的です。

String.Format("{0:C}", total);

注:前後に解析するとオーバーヘッドが発生するため、データの量によっては、値をオブジェクトにオフロードし、10進値が再度必要になったときに参照する方が賢明な場合があります。

于 2013-01-09T15:21:54.313 に答える
1

別の方法として、値を読み取るたびにこれを行うことができます。

double value = 0;
if (!double.TryParse(tbx_total.Text.TrimStart(new char[] { '$', ' ' }), out value))
{
      //Ooops... not a valid number
}

したがって、ここでは基本的に、追加された「$」と数値の前のスペースを削除して、doubleとして解析できるようにします。このようにして、番号が正しく入力されているかどうかを確認できます(ユーザーがテキストボックスを編集できる場合)。

于 2013-01-09T15:37:29.667 に答える
0

元の値(10進数)をDataTableまたは他のコレクションに格納し、これらの値を使用して必要なものを計算する必要があると思います。

したがって、文字列から元に戻す方法を気にせずに、10進値を任意の形式でフォーマットできます。

于 2013-01-09T15:47:35.503 に答える