【问题标题】:How to make textbox accept only currency format input?如何使文本框只接受货币格式输入?
【发布时间】:2020-03-03 03:56:15
【问题描述】:

这是程序的截图。如您所见,我制作了我想要的输出格式。我使用了这段代码: <DataGridTextColumn Header="Price" Binding="{Binding Path=Price, StringFormat=C, ConverterCulture='de-DE'}"/>

如何使文本框仅接受数字作为货币格式的输入,或者如何使其在键入时自动格式化?我尝试了一些我在这里和那里找到的代码,但它没有用。希望有人可以帮助我并给我一些详细的信息。数据必须保存在 SQL Server 数据库中,直到现在我都使用 LINQ。

【问题讨论】:

    标签: c# wpf validation


    【解决方案1】:

    您可以创建一个 TextChanged 事件并随时格式化文本。

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            textBox1.Text = string.Format("{0:#,##0.00}", double.Parse(textBox1.Text));
        }
    
        private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) && (e.KeyChar != '.'))
            {
                e.Handled = true;
            }
    
            // only allow one decimal point
            if ((e.KeyChar == '.') && ((sender as TextBox).Text.IndexOf('.') > -1))
            {
                e.Handled = true;
            }
        }
    

    从: https://stackoverflow.com/a/15473340/5588364

    并且: https://stackoverflow.com/a/463335/5588364

    【讨论】:

    • 而不是 double.Parse 我做了十进制.Parse。但有一个问题。当我尝试在该点之后写 2 位数字时,对于美分,我遇到了性能问题,我必须用光标手动指向那里并在 1 秒内键入 2 位数字/// 第二个事件不适用wpf,如果你知道如何操作它来使用 wpf 会很棒
    • 使用提供的代码,当我键入时,数字会按类型顺序颠倒。基本上,如果我输入 34,它会显示为 43。这是什么原因造成的?
    • 这么琐碎的东西做了这么多的问题和头疼的事情。MaskedTextBox真是没用的控件。感谢这个解决方案,就像一个魅力!
    • @goodfella 那是因为这个答案的设计。在此处查看我的答案,以在用户键入时验证货币。 stackoverflow.com/a/65964280/591285
    【解决方案2】:

    您可以通过这个简单的代码简单地防止添加非数字字符

     if (long.TryParse(TextBox.Text,out long isparsable))
            {
              // your code to handle numbers
            }
            else
            {
                TextBox.Text="Only Numbers Allowed";
                TextBox.Focus();
                TextBox.SelectAll();
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多