gpt4 book ai didi

c# - C# 上价格/现金/货币的文本框

转载 作者:太空宇宙 更新时间:2023-11-03 17:08:55 27 4
gpt4 key购买 nike

我有个问题困扰了我一段时间。我尝试了一些解决方案,但没有奏效。

我有一个用于现金输入的文本框(例如 $999,99)。但是我需要自动输入“,”和“。”正确显示值。

我尝试了两种解决方案。其中之一是:

   private void tx_ValorUnidade_TextChanged(object sender, EventArgs e)
{
string value = tx_ValorUnidade.Text.Replace(",", "").Replace("R$", "");
decimal ul;
//Check we are indeed handling a number
if (decimal.TryParse(value, out ul))
{
//Unsub the event so we don't enter a loop
tx_ValorUnidade.TextChanged -= tx_ValorUnidade_TextChanged;
//Format the text as currency
tx_ValorUnidade.Text = string.Format(System.Globalization.CultureInfo.CreateSpecificCulture("pt-BR"), "{0:C2}", ul);
tx_ValorUnidade.TextChanged += tx_ValorUnidade_TextChanged;
}
}

然而,结果却很奇怪。

另一个是这样的:

    private void tx_ValorUnidade_KeyUp(object sender, KeyEventArgs e)
{
if (!string.IsNullOrEmpty(tx_ValorUnidade.Text))
{
System.Globalization.CultureInfo culture = new System.Globalization.CultureInfo("en-US");
int valueBefore = Int32.Parse(tx_ValorUnidade.Text, System.Globalization.NumberStyles.AllowThousands);
tx_ValorUnidade.Text = String.Format(culture, "{0:N0}", valueBefore);
tx_ValorUnidade.Select(tx_ValorUnidade.Text.Length, 0); *
}
}

这个有点管用,但有一个问题:如果用户想插入类似 $10,00 的东西,它就不能。它也会在 5 个数字后崩溃。

作为原始引用,我从 other 获得了 2 个代码questions这里。

我该如何解决?我用的例子错了吗?欢迎任何想法。

最佳答案

我认为当用户移动到下一个控件时进行格式化会更好,例如像下面。否则它会非常困惑,因为文本会在用户输入时自行更改:

    private void textBox1_Leave(object sender, EventArgs e)
{
Double value;
if (Double.TryParse(textBox1.Text, out value))
textBox1.Text = String.Format(System.Globalization.CultureInfo.CurrentCulture, "{0:C2}", value);
else
textBox1.Text = String.Empty;
}

关于c# - C# 上价格/现金/货币的文本框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19215989/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com