【问题标题】: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 方法?

【问题讨论】:

    标签: c# winforms maskedtextbox


    【解决方案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
        }
        

        【讨论】:

          猜你喜欢
          • 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
          相关资源
          最近更新 更多