Вы можете использовать что-то вроде этого.
private void txtOrgao_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.V && e.Modifiers == Keys.Control)
{
//Valida copy and paste com caracteres especiais
e.SuppressKeyPress = !Util.validaCaracteresEspeciaisClipBoard(txtOrgao);
}
}
private void txtOrgao_KeyPress(object sender, KeyPressEventArgs e)
{
if (!Char.IsLetterOrDigit(Convert.ToChar(e.KeyChar)) &&
!Char.IsControl(Convert.ToChar(e.KeyChar)) &&
!Char.IsWhiteSpace(Convert.ToChar(e.KeyChar)))
{
e.Handled = true;
}
}
Утилита класса помощника:
public class Util
{
/// <summary>
/// Valida caracteres especiais em textBox para suprimir o evento KeyPress
/// Caracteres Inválidos: Simbolos
/// </summary>
/// <param name="caixaTexto">objeto TextBox</param>
/// <returns></returns>
static public Boolean validaCaracteresEspeciaisClipBoard(TextBox caixaTexto)
{
//Valida copy and paste com caracteres especiais
String clip = String.Empty;
if (Clipboard.ContainsText())
{
clip = Clipboard.GetText().Substring(0, caixaTexto.MaxLength);
for (int tam = 0; tam < caixaTexto.MaxLength; tam++)
{
if (!Char.IsLetterOrDigit(clip[tam]) &&
!Char.IsControl(clip[tam]) &&
!Char.IsWhiteSpace(clip[tam]))
{
return false;
}
}
}
return true;
}
}