1

我正在尝试制作一个text-box只接受数字、空格和加号的。

目前我KeyPressEventtextbox

if (!char.IsDigit(e.KeyChar) && !char.IsControl(e.KeyChar) &&!char.IsWhiteSpace(e.KeyChar))
    {
                e.Handled = true;
    }

我也想接受这个+标志

更新

我确实处理了,!char.IsSymbol(e.KeyChar)但它也会接受这个=标志+

任何帮助!

谢谢

4

4 回答 4

1

对于“输入期间”控制和验证控制,您可以进行类似的操作。

但是你的文本框中会有很多东西(1+++ +2 34+),这并不意味着很多......

textBox.KeyDown += (sender, e) =>
                               {
                                   if (!(
                                       //"+
                                       e.KeyCode == Keys.Add || 
                                       //numeric
                                       (e.KeyCode >= Keys.NumPad0 && e.KeyCode <= Keys.NumPad9) || 
                                       //space
                                       e.KeyCode == Keys.Space))
                                   {
                                       e.Handled = true;
                                   }
                               };
textBox.Validating += (sender, eventArgs) =>
                                  {
                                      var regex = new Regex(@"[^0-9\+ ]+");
                                      textBox.Text = regex.Replace(textBox.Text, string.Empty);
                                  };
于 2012-06-01T15:45:33.437 回答
0

添加

var reg = new Regex(@"^\+?(\d[\d-. ]+)?(\([\d-. ]+\))?[\d-. ]+\d$");

作为正则表达式

于 2012-06-01T16:23:34.790 回答
0

严格来说你可以追加

     && !e.KeyChar == '+' 

符合您的标准,它应该就键盘输入而言可以工作,但如果目标是只允许数字输入,.net 控件库还包含一个可以解决问题的 NumericUpDown 控件。

于 2012-06-01T15:41:33.770 回答
0

这对我来说很好:

if (!(char.IsLetter(e.KeyChar) && (!char.IsControl(e.KeyChar) 
    && !char.IsDigit(e.KeyChar) && !(e.KeyChar == '.'))
{
    e.Handled = true;
}

我添加了 char.IsControl,因为它允许您在类型错误的情况下使用 Backspace。

于 2020-02-15T16:10:18.273 回答