2009-08-11 7 views
1

Je travaille sur une application basée sur Windows.Validation de la zone de texte

Je souhaite valider les valeurs de la zone de texte. Utilisateur ne saisissez que des valeurs numériques dans la zone de texte, maintenant je suis en mesure de valider keypressevent, mais je veux valider la valeur copiée doit être numérique, puis seulement coller (souris clic droit coller ou Ctrl + v) zone de texte.

Répondre

1

La réponse dépend du niveau de feedback que vous souhaitez. Si vous souhaitez donner des commentaires aux utilisateurs, je vous recommande d'utiliser l'événement Validating et un ErrorProvider.

Voici un exemple: http://www.java2s.com/Tutorial/CSharp/0460__GUI-Windows-Forms/ErrorProvidernumbermustbeinarange.htm

Sinon, se lient aux KeyDown ou à des événements TextChanged, et la bande de toute entrée que vous ne vouliez pas être là. En fonction de vos exigences de validation exactes, vous pouvez également trouver un MaskedTextBox utile: http://msdn.microsoft.com/en-us/library/system.windows.forms.maskedtextbox.aspx

0

Lorsque l'utilisateur met l'accent sur une zone de texte (en supposant qu'une valeur a été copiée de quelque part), vous pouvez vérifier la dernière valeur copiée dans le Presse-papiers et soit désactiver/supprimer le focus du contrôle en fonction de vos critères de validation.

Exemple d'utilisation du Presse-papiers en C#: http://www.codeproject.com/KB/shell/clipboard01.aspx

0

Vous pouvez utiliser quelque chose comme ça.

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; 
     } 
    } 

classe Helper util:

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; 
    } 

}