解析蒙版文本框中的文本
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
【讨论】:
以上是关于解析蒙版文本框中的文本的主要内容,如果未能解决你的问题,请参考以下文章