5

C#で桁のグループ化を入力するにはどうすればよいですか? 私のコードは機能しますが、1 つのインスタンスに対してのみです。計算機のすべての数値をグループ化するには、常にクリックする必要があります。クリックするとすべての数字 (提示された数字だけでなく) がグループ化され、チェックボックスをオフにするとグループ化されないようにするにはどうすればよいでしょうか?

これは現在のコードです:

NumberFormatInfo nFI = new CultureInfo("en-US", false).NumberFormat;


double int_value = Convert.ToDouble(textboxt1.text);


textbox1.Text = int_Value.ToString("N", nFI);
4

2 に答える 2

2

間違った場所でフォーマットを呼び出しているようです。textbox1.Text = int_Value.ToString("N", nFI);チェックボックスをクリックしたとき (つまり、電卓のボタンなどをクリックしたとき) に加えて、値が変更されたときtextboxt1.TextChanged、およびチェックボックスがオンになっている場合 ( ) にのみ、それを呼び出すことをお勧めしますif (checkbox1.Checked == true) textbox1.Text...。また、必要なすべての場所で呼び出される別の関数にする必要があります。

明確にするために編集する

おそらく発生している問題は、 の表示を変更している複数のソースがあることですtextbox1。投稿したコードは、おそらく何らかのcheckbox_CheckChanged(sender, e)イベント ハンドラーに含まれています。

テキストボックスの値を変更するコード (おそらく電卓ボタンなど) も他の場所にある可能性があります (...のようなもの)。

double value = Convert.ToDouble(textbox.Text);
value = value + 1;
textbox1.Text = value.ToString();

たとえば +1 ボタンで?)

あなたがしたいことは、displayValue(double value)それを常に正しくフォーマットする別の機能を持つことです。

private void SetDisplayValue(double value)
{
    NumberFormatInfo nFI = new CultureInfo("en-US", false).NumberFormat
    if (checkBox.Checked == true)
        textbox1.Text = value.ToString("N", nFI);
    else
        textbox1.Text = value.ToString();
}

ボタンや _CheckChanged などに関係なく、コード内で textbox1.Text を設定するすべての場所で、代わりにそのプライベート関数を呼び出します。

于 2010-03-02T01:52:29.200 に答える