【问题标题】:problem in filtering textbox in windows applicationwindows应用程序中过滤文本框的问题
【发布时间】:2010-07-20 12:23:54
【问题描述】:

我的要求是我想在我的文本框中输入十进制值,如果用户输入 .dot 他必须输入 3 个十进制值,否则它不应该允许离开文本框。如果用户没有输入 .dot 他可以允许输入任何数字如何在 .net winforms 文本框中进行限制。

十进制((1-9),3)

小数点前可以是任何十进制值,如

真实案例

123--- 1232.004--- 123123123123.555--- 3123123123--- .231---

假案

123.--- 222.33--- 123.3--- 21312323.1232133--- .2--- .12313---

【问题讨论】:

    标签: winforms textbox keypress restriction


    【解决方案1】:

    订阅TextBoxValidating事件:

    private void TextBox_Validating(object sender, CancelEventArgs e)
    {
        string Text = ((TextBox)sender).Text;        
        string[] Parts = Text.Split(new char[] { '.' });
        decimal Dummy;
        e.Cancel = !decimal.TryParse(Text, out Dummy) || 
            ((Parts.Length == 2) && (Parts[1].Length != 3));
    }
    

    或者您可以使用Regular Expressions 进行文本验证或其他操作。但是如果您取消对文本框的验证,那么主要思想就在这里,那么默认情况下用户不能离开它。还要检查AutoValidate 属性。

    【讨论】:

      【解决方案2】:

      只需处理Validating 事件并检查.,如果发现任何一个,请确保其后跟3 位数字。

      只需使用IndexOf 查找点,检查该字符串在该索引之后是否包含至少 3 个字符,然后取出接下来的 3 个字符并确保它们都是数字。

      【讨论】:

        【解决方案3】:

        或者将条目分成两个文本框,一个用于点之前的数字,第二个用于点之后的三个数字。

        有点像输入带有 3 个文本框的 SSN。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-01-05
          • 2012-01-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多