Skip to main content
 首页 » 编程设计

c#之锁定文本框中的有效字符

2024年01月26日34duanxz

我需要能够锁定文本框中的有效字符,我目前有一个正则表达式,我可以检查每个字符,例如

[A-Za-z]

将锁定为字母字符。

protected override void OnKeyPress(KeyPressEventArgs e) 
{ 
  if (e.KeyChar == (char)Keys.Back) 
  { 
    base.OnKeyPress(e); 
    return; 
  } 
  if (String.IsNullOrEmpty(this._ValidCharExpression)) 
  { 
    base.OnKeyPress(e); 
  } 
  else 
  { 
    bool isValidChar = Regex.Match(e.KeyChar.ToString(),this._ValidCharExpression).Success; 
    if (isValidChar) 
    { 
      base.OnKeyPress(e); 
    } 
    else 
    { 
      e.Handled = true; 
    } 
  } 
} 

我已将正则表达式代码放在 OnKeyPress 代码中,但我希望允许所有特殊键,例如 Ctrl-V、Ctrl-C 和退格键。

如您所见,我正在处理退格键。但是,例如 Ctrl-V 看不到 V 键,因为它针对 ctrl 键运行一次但看不到任何修饰键。

处理这种情况的最佳方法是什么?

请您参考如下方法:

MaskedTextBox可能适合您。

您还可以查看 FilterTextBox在 CodeProject 上。您可以使用它(或描述的方法)来执行您想要的操作。基本思想是在更改变得可见之前取消更改(通过 OnTextChanging 事件)。