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

标签 c# .net winforms validation textbox

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

[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 事件)。

关于c# - 锁定文本框中的有效字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/252611/

相关文章:

java - 实例级线程本地存储有什么优势?

c# - Process.GetCurrentProcess().MainWindowHandle 返回零

c# - 无法动态地将用户控件添加到面板

c# - 删除datagridview标题中的排序箭头并将文本放在框的中央

c# - 使用 SharpDx 或 IMSourceReader 从 mp4 文件中读取第二个音轨流

c# - 在内存中创建文本文件,然后将其上传到 Azure Blob 存储

c# - 根据字符串访问特定标签

c# - 属性可以引用嵌入式资源吗?

c# - Bitmap.GetHbitmap() 在 XP 上失败

c# - 覆盖派生类中显式实现的接口(interface)方法