C# 计算器-c中用逗号分隔的千位分隔符#

C# 计算器-c中用逗号分隔的千位分隔符#,c#,C#,} 我用上面的代码制作计算器。我想得到带小数点的结果。我想在中键入1234.1234 文本框,但我无法在文本框中键入1234.1234。我的意思是逗号和十进制值不一致 有谁能帮我解决这个问题吗?你必须提供一种使用的文化。成千上万的人在签名。 通常,您希望使用用户当前的区域性 private void TextBox_TextChanged(object sender, EventArgs e) { string value = TextBox.Text.Replace(",", ""); dou

}

我用上面的代码制作计算器。我想得到带小数点的结果。我想在中键入1234.1234

文本框,但我无法在文本框中键入1234.1234。我的意思是逗号和十进制值不一致


有谁能帮我解决这个问题吗?

你必须提供一种使用的文化。成千上万的人在签名。 通常,您希望使用用户当前的区域性

private void TextBox_TextChanged(object sender, EventArgs e)
{
string value = TextBox.Text.Replace(",", "");
double dbl;
if (double.TryParse(value, out dbl))
{
    TextBox.TextChanged -= TextBoxTextChanged;
    TextBox.Text = string.Format("{0:#,#0}", dbl);
    TextBox.SelectionStart = TextBox.Text.Length;
    TextBox.TextChanged += TextBoxTextChanged;
}

您必须提供一种使用的文化。成千上万的人在签名。 通常,您希望使用用户当前的区域性

private void TextBox_TextChanged(object sender, EventArgs e)
{
string value = TextBox.Text.Replace(",", "");
double dbl;
if (double.TryParse(value, out dbl))
{
    TextBox.TextChanged -= TextBoxTextChanged;
    TextBox.Text = string.Format("{0:#,#0}", dbl);
    TextBox.SelectionStart = TextBox.Text.Length;
    TextBox.TextChanged += TextBoxTextChanged;
}
试试这个:

double.TryParse(value, System.Globalization.NumberStyles.Number, System.Globalization.CultureInfo.CurrentCulture, out dbl)
试试这个:

double.TryParse(value, System.Globalization.NumberStyles.Number, System.Globalization.CultureInfo.CurrentCulture, out dbl)

我不明白为什么要在同一个事件处理程序中分配事件处理程序。。。TextBox.TextChanged+=TextBoxTextChanged;在任何情况下,您都需要使用CultureInfo为特定用户设置数字格式culture@Oscar. 其目的似乎是关闭事件处理程序(
-=
),更改文本,然后将其重新打开(
+=
)。这可能是为了停止对
TextBox.Text
的赋值,避免无限递归事件。我不明白为什么要在同一个事件处理程序中赋值事件处理程序。。。TextBox.TextChanged+=TextBoxTextChanged;在任何情况下,您都需要使用CultureInfo为特定用户设置数字格式culture@Oscar. 其目的似乎是关闭事件处理程序(
-=
),更改文本,然后将其重新打开(
+=
)。这大概是为了停止对
TextBox.Text
的赋值,避免无限递归事件。对不起,Wertzui,它不起作用。我想打1000.123,但我打不出来!使用上述代码解析字符串“1000.123”确实有效。根据您的文化,结果为1000123或1000.123。对不起,Wertzui,它不起作用。我想打1000.123,但我打不出来!使用上述代码解析字符串“1000.123”确实有效。根据您的文化背景,结果为1000123或1000.123。