Мне нужно иметь возможность заблокировать действительные символы в текстовом поле, в настоящее время у меня есть регулярное выражение, с которым я могу проверить каждый символ, например
[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 и Backspace, были разрешены.
Как видите, у меня обрабатывается клавиша возврата. Однако, например, Ctrl-V не может видеть клавишу V, потому что он запускается один раз для клавиши ctrl, но не видит клавиш-модификаторов.
Как лучше всего справиться с этой ситуацией?