Звучит так, будто вы вызываете форматирование не в том месте. Возможно, вы захотите назвать это 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();
}
и в каждом месте, где вы бы установили textbox1.Text в своем коде, независимо от того, находится ли он в кнопке, в _CheckChanged или в любом другом месте, вместо этого вызывайте эту частную функцию.