10

私はWindowsフォームを初めて使用し、何かをしようとしています。私はC#を使用しています。

私はWindowsフォームを使用しており、フォームに8つのテキストボックスを配置しましたが、すべて数値で10進値です。

私は以下の結果を達成したいと思います。私の小数点記号はコンマで、千単位の区切り文字はドットです。##。###、##などを見たことがありますが、覚えていません。以下のアプローチを実現するにはどうすればよいですか。

つまり、1234と入力してテキストボックスからフォーカスを離れると、フォーマットする必要があり、テキストボックスに戻ったときに、千単位の区切り文字だけで小数点記号だけをフォーマットするべきではありません。

LostFocusのようないくつかのイベントを使用する必要があると思います。

入力結果

12341.234,00

12.34 12,34

12,34 12,34

1234567 1.234.567,00

12,34 12,34

12345,67 12.345,67

4

2 に答える 2

17

テキストボックスのLostFocusイベントで、次を使用します。

textBox1.Text = string.Format("{0:#,##0.00}", double.Parse(textBox1.Text));

上記のロジックを適用する前に、最初にテキストがdouble / integerであることを確認してください。そうでない場合、例外がスローされます。この解決策はかなり厳しく、難しいものです。

フォーマットを現在のコンピューターの文化ではなく特定の文化にしたい場合は、

textBox1.Text = string.Format(System.Globalization.CultureInfo.GetCultureInfo("id-ID"), "{0:#,##0.00}", double.Parse(textBox1.Text));

上記の例は、千の区切り文字がコンマ( "、")ではなくドット( "。")を使用するインドネシアの通貨形式の場合です。

于 2013-03-18T09:25:43.840 に答える
2

おそらく、 MaskedTextBoxを使用できます。

フォーカスを失ったときに入力長に基づいてマスクを調整できます。

于 2013-03-18T09:54:47.263 に答える