Группировка цифр в.NET
Как мы вводим группировку цифр в C#? Мой код работает, но только для одного экземпляра. Я должен постоянно щелкать по нему, чтобы сгруппировать все числа в калькуляторе. Как мы сгруппируем его так, чтобы, если мы щелкаем по нему, он группировал каждое число (а не только представленное число), а если мы снимаем флажок, он этого не делает?
Это текущий код:
NumberFormatInfo nFI = new CultureInfo("en-US", false).NumberFormat;
double int_value = Convert.ToDouble(textboxt1.text);
textbox1.Text = int_Value.ToString("N", nFI);
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();
}
и каждое место, в котором вы бы установили textbox1.Text в своем коде, независимо от того, находится ли оно в кнопке, _CheckChanged или еще чем-то, вместо этого вызывает эту закрытую функцию.
Итак, вот код:
используя Систему; using System.Collections.Generic; using System.ComponentModel; используя System.Data; использование System.Drawing; использование System.Text; использование System.Windows.Forms; используя System.Globalization;
пространство имен _3rdQuarterExam_ADLM {открытый частичный класс Form1: Form {
public Form1()
{
InitializeComponent();
}
double x;
double y;
string operation;
double memory;
string current;
private void button1_Click(object sender, EventArgs e)
{
if (textBox1.Text == "0.")
{
textBox1.Text = button1.Text;
}
else
{
textBox1.Text += button1.Text;
}
}
private void button13_Click(object sender, EventArgs e)
{
if (textBox1.Text == "0.")
{
textBox1.Text = button13.Text;
}
else
{
textBox1.Text += button13.Text;
}
}
private void button6_Click(object sender, EventArgs e)
{
if (textBox1.Text == "0.")
{
textBox1.Text = button6.Text;
}
else
{
textBox1.Text += button6.Text;
}
}
private void button16_Click(object sender, EventArgs e)
{
if (textBox1.Text == "0.")
{
textBox1.Text = button16.Text;
}
else
{
textBox1.Text += button16.Text;
}
}
private void button9_Click(object sender, EventArgs e)
{
if (textBox1.Text == "0.")
{
textBox1.Text = button9.Text;
}
else
{
textBox1.Text += button9.Text;
}
}
private void button3_Click(object sender, EventArgs e)
{
if (textBox1.Text == "0.")
{
textBox1.Text = button3.Text;
}
else
{
textBox1.Text += button3.Text;
}
}
private void button10_Click(object sender, EventArgs e)
{
if (textBox1.Text == "0.")
{
textBox1.Text = button10.Text;
}
else
{
textBox1.Text += button10.Text;
}
}
private void button15_Click(object sender, EventArgs e)
{
if (textBox1.Text == "0.")
{
textBox1.Text = button15.Text;
}
else
{
textBox1.Text += button15.Text;
}
}
private void button8_Click(object sender, EventArgs e)
{
if (textBox1.Text == "0.")
{
textBox1.Text = button8.Text;
}
else
{
textBox1.Text += button8.Text;
}
}
private void button4_Click(object sender, EventArgs e)
{
if (textBox1.Text == "0.")
{
textBox1.Text = button4.Text;
}
else
{
textBox1.Text += button4.Text;
}
}
private void Plus_Click(object sender, EventArgs e)
{
if (textBox1.Text == "0.")
{
x = Convert.ToDouble(textBox1.Text);
operation = Plus.Text;
}
else
{
x = Convert.ToDouble(textBox1.Text);
operation = Plus.Text;
textBox1.Text = "";
}
}
private void MINUS_Click(object sender, EventArgs e)
{
if (textBox1.Text == "0.")
{
x = Convert.ToDouble(textBox1.Text);
operation = MINUS.Text;
}
else
{
x = Convert.ToDouble(textBox1.Text);
operation = MINUS.Text;
textBox1.Text = "";
}
}
private void Times_Click(object sender, EventArgs e)
{
if (textBox1.Text == "0.")
{
x = Convert.ToDouble(textBox1.Text);
operation = Times.Text;
}
else
{
x = Convert.ToDouble(textBox1.Text);
operation = Times.Text;
textBox1.Text = "";
}
}
private void DIVIDE_Click(object sender, EventArgs e)
{
if (textBox1.Text == "0.")
{
x = Convert.ToDouble(textBox1.Text);
operation = DIVIDE.Text;
}
else
{
x = Convert.ToDouble(textBox1.Text);
operation = DIVIDE.Text;
textBox1.Text = "";
}
}
private void button24_Click(object sender, EventArgs e)
{
y = Convert.ToDouble(textBox1.Text);
if (operation == Plus.Text)
{
textBox1.Text = Convert.ToString(x + y);
}
else if (operation == MINUS.Text)
{
textBox1.Text = Convert.ToString(x - y);
}
else if (operation == Times.Text)
{
textBox1.Text = Convert.ToString(x * y);
}
else if (operation == DIVIDE.Text)
{
textBox1.Text = Convert.ToString(x / y);
}
}
private void button25_Click(object sender, EventArgs e)
{
textBox1.Text = textBox1.Text.Substring(0, textBox1.Text.Length - 1);
}
private void button27_Click(object sender, EventArgs e)
{
textBox1.Text = "0.";
}
private void button26_Click(object sender, EventArgs e)
{
textBox1.Text = "0.";
operation = Convert.ToString(ConsoleCancelEventArgs.Empty);
}
private void button21_Click(object sender, EventArgs e)
{
x = Convert.ToDouble(textBox1.Text);
textBox1.Text = Convert.ToString(Math.Sqrt(x));
}
private void button19_Click(object sender, EventArgs e)
{
x = Convert.ToDouble(textBox1.Text);
textBox1.Text = Convert.ToString(1 / x);
}
private void button20_Click(object sender, EventArgs e)
{
y = Convert.ToDouble(textBox1.Text);
textBox1.Text = Convert.ToString(x * (y / 100));
}
private void button2_Click(object sender, EventArgs e)
{
x = Convert.ToDouble(textBox1.Text);
if (textBox1.Text == "0.")
{
textBox1.Text = textBox1.Text;
}
else
{
textBox1.Text = Convert.ToString(-1 * x);
}
}
private void button5_Click(object sender, EventArgs e)
{
if (textBox1.Text == "0.")
{
textBox1.Text = button5.Text;
}
else
{
textBox1.Text += button5.Text;
}
}
private void copyToolStripMenuItem_Click(object sender, EventArgs e)
{
current = textBox1.Text;
}
private void pasteToolStripMenuItem_Click(object sender, EventArgs e)
{
textBox1.Text = "";
textBox1.Paste(current);
}
private void aboutUToolStripMenuItem_Click(object sender, EventArgs e)
{
Form2 form = new Form2();
form.Show();
}
private void button18_Click(object sender, EventArgs e)
{
memory = 0;
textBox1.Text = "0.";
}
private void button12_Click(object sender, EventArgs e)
{
textBox1.Text = Convert.ToString(memory);
}
private void button17_Click(object sender, EventArgs e)
{
memory = 0;
memory += Convert.ToDouble(textBox1.Text);
}
private void button11_Click(object sender, EventArgs e)
{
memory += Convert.ToDouble(textBox1.Text);
}
private void digitGroupingToolStripMenuItem_Click(object sender, EventArgs e)
{
if (digitGroupingToolStripMenuItem.Checked)
{
NumberFormatInfo nFI = new CultureInfo("en-US", false).NumberFormat;
double int_value = Convert.ToDouble(textBox1.Text);
textBox1.Text = int_value.ToString("N", nFI);
}
else
{
}
}
}
}
Где мы должны это разместить?