c# - 带 1 个逗号的文本框货币格式

标签 c# .net winforms textbox currency

我有一个 C# winforms 文本框。

   private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (!char.IsNumber(e.KeyChar) & (Keys)e.KeyChar != Keys.Back
                & e.KeyChar != ',')
        {
            e.Handled = true;
        }

        base.OnKeyPress(e);
    }

上面的代码工作得很好,但是我可以添加 2 个逗号,例如 "100,,00"。我怎样才能只让用户添加 "100,00" 或 < strong>"100,000,000" 带 1 个逗号作为货币格式?

任何帮助将不胜感激。

谢谢。

最佳答案

不是对您实际问题的直接答案,但绝对是您应该考虑的建议:使用 MaskedTextBox为此,不是 TextBox

MaskedTextBox 有一个 Mask充当文本值模式的属性。在您的情况下,适当的掩码可能是#,###.##。请注意,根据区域性,小数点分隔符上的程序集可能不是逗号。不过,您仍然可以将其转换为数值,这肯定是您想要的。

更新:

作为额外的建议,一些第三方供应商如 确实提供了具有更高级掩码输入的控件,可以使用传统掩码以及基于正则表达式的验证器。如果你能负担得起这笔钱,这可能是值得考虑的事情。

关于c# - 带 1 个逗号的文本框货币格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22665608/

相关文章:

c# - 创建批量文件的算法

c# - 如何防止对文本框的SQL注入(inject)攻击?

c# - c0000005 C 中的异常 :\Windows\Microsoft. NET\Framework\v4.0.30319\sos.threads 调试器扩展

c# - 标记枚举与常规枚举的 HashSet

c# - 安全序列化

c# - 如何禁用应用程序的 alt+F4?

c# - 组行上的 DevExpress GridHitInfo

c# - 参数值缺失 '#' 在行动

c# - 将 json 转换为 C# 数组?

C# 方法命名约定 : ToSomething vs. AsSomething