2015-01-05 18 views
0

之间输入号码,我怎样才能限制进入任何东西,在文本框中99.99如何只允许0-99.99

我的代码似乎是工作的用户,比0之间的值,但其他的,它会允许输入任意号码。它只允许一次数字和一个点。但它仍然会允许的值大于99.99

下面我的代码更大:

private void InputMargin_KeyPress(object sender, KeyPressEventArgs e) 
    { 
     try 
     { 
      // allow only number and dot 
      if ( ! char.IsControl(e.KeyChar) 
       && ! char.IsDigit(e.KeyChar) 
       && e.KeyChar != '.' 
       || (e.KeyChar == '.' && (sender as TextBox).Text.IndexOf('.') > -1) 
      ) 
      { 
       //e.Handled = true; 
       double margin; 
       double.TryParse((sender as TextBox).Text, out margin); 

       if (margin >= 0 && margin <= 99.99) 
       { 
        e.Handled = true; 
       } 
       else 
       { 
        e.Handled = false; 
       } 
      } 

     } 
     catch 
     { 
      e.Handled = false; 
     } 
    } 
+0

为什么你不应该使用蒙面文本框? –

+0

为什么不试试像这样的'[0-9] {1,2} [。] {0,1} [0-9] {2}''的正则表达式。这可能不是正确的选择,但可以作为出发点 – Saravanan

回答

0

为什么不使用NumericUpDown控件与小数位数属性设置为2

无需添加任何额外的编码像文本框。

0

你为什么用'& & e.KeyChar!='。'因为这样做不接受'。' .just删除这个,因为你也使用(发件人为文本框).Text.IndexOf('。')> -1这只接受一个'。'在整个文本字段中,所以Right if语句将会如此。

if ( ! char.IsControl(e.KeyChar) 
       && ! char.IsDigit(e.KeyChar) 
       || (e.KeyChar == '.' && (sender as TextBox).Text.IndexOf('.') > -1) 
      ) 
    { 
//Your Code 
}