解析蒙版文本框中的文本

Posted

技术标签:

【中文标题】解析蒙版文本框中的文本【英文标题】:Parsing Text from a Masked Text Box 【发布时间】:2013-12-13 10:31:17 【问题描述】:

我有一个用 C# 编写的 WinForms 应用程序

直到最近,我的表单上有很多文本框,用户可以在其中输入财务金额。我最初没有合并任何形式的掩码,每当我需要处理用户输入的值时,我都会使用 Decimal.Parse 将每个框中的文本解析为十进制值;

但是我被要求让文本框看起来像财务金额 即 £1,050.75 而不是 1050.75 因此,我开始将文本框更改为 MaskedTextBox 并给它们一个£#,##0.00 的掩码 但是,现在每次尝试从 MaskedTextBoxes 解析文本都会给出错误“输入字符串格式不正确”。

如何从 MaskedTextBox 获取用户输入并解析为十进制格式以使用?

我应该使用 MaskedTextBox,还是有其他方法可以在表单上显示财务类型格式,而不影响 Decimal.Parse 方法?

【问题讨论】:

【参考方案1】:

当您从 Maskedtextbox 获取值时,它会将值设为 £#,##0.00 。所以符号不会转换为十进制。尝试删除符号并将值转换为十进制。喜欢

        string val= maskedTextBox1.Text.Replace("£","");
        Decimal.Parse(val);

【讨论】:

【参考方案2】:

您可以将格式选项与 AllowCurrencySymbol 一起使用。它必须与文化的货币符号相匹配。这段代码是我从VB转换过来的,希望是正确的。

Application.CurrentCulture = New Globalization.CultureInfo("en-GB");
Decimal.Parse("£12,345.67", Globalization.NumberStyles.AllowThousands | Globalization.NumberStyles.AllowDecimalPoint | Globalization.NumberStyles.AllowCurrencySymbol);

另外,如果您不想改变文化,请参阅此问题: Problem parsing currency text to decimal type

【讨论】:

【参考方案3】:

您可以检查MaskFull 以查看文本是否正确输入,然后应用反蒙版(通过删除它,您的蒙版正在添加)。

不幸的是,我不知道自动取消屏蔽。但你可以这样做:

if(maskedTextBox1.Mask)

    var enteredText = maskedTextBox1.SubString(1).Replace(",", null); // remove pound symbol and commas
    // ... parse as with normal TextBox

【讨论】:

以上是关于解析蒙版文本框中的文本的主要内容,如果未能解决你的问题,请参考以下文章

Selenium IDE - 验证文本框中的自动填充文本

选择下拉框中的值时启用文本框[关闭]

计算报告中文本框中的结果数高于一定数量

如何使文本框中的字体上下左右都居中

C#如何从表单中的文本框中获取文本,从不同的类调用

如何让word文本框中的文字垂直上下居中