如何使文本框仅接受货币格式输入?

时间:2015-11-21 18:31:49

标签: c# wpf validation

enter image description here

这是该程序的屏幕截图。如你所见,我把输出格式设为我想要的样子。我用过这段代码:  <DataGridTextColumn Header="Price" Binding="{Binding Path=Price, StringFormat=C, ConverterCulture='de-DE'}"/>

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

2 个答案:

答案 0 :(得分:7)

您可以随时创建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

答案 1 :(得分:0)

您可以通过此简单代码简单地阻止添加非数字字符

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