【发布时间】:2010-09-20 03:18:44
【问题描述】:
我需要能够锁定文本框中的有效字符,我目前有一个正则表达式,我可以检查每个字符,例如
[A-Za-z]
将锁定为仅 Alpha 字符。
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 和 Backspace。
如您所见,我处理了退格键。但是,例如 Ctrl-V 看不到 V 键,因为它为 ctrl 键运行一次,但看不到任何修饰键。
处理这种情况的最佳方法是什么?
【问题讨论】:
-
在 KeyPresses 上手动操作很难。可以,但必须记住允许所有控制键(退格、删除等)。如果你这样做,至少把它放在一个从 TextBox 派生的新控件中,这样你就可以重用它。或者更好的是,阅读 Tomalak 的答案——这是正确的方法。 :)
标签: c# .net winforms validation textbox