間違った場所でフォーマットを呼び出しているようです。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 を設定するすべての場所で、代わりにそのプライベート関数を呼び出します。