2010-06-15 6 views
0

Je dois créer une zone de texte (WPF) pour entrer l'heure avec la validation. Je souhaite entrer une validation d'expression régulière pour l'heure (6h12 du matin).Validation de temps dans TextBox. Valider une zone de texte pour une expression régulière

+1

Veuillez être plus précis. Avec quelle partie vous battez-vous? – fearofawhackplanet

+0

J'ai une zone de texte dans laquelle l'utilisateur peut entrer l'heure comme 6h00 ou l'utilisateur peut donner le temps en minutes, par exemple. 123> qui sera converti en format d'heure en utilisant un convertisseur. Mais je veux donner une validation sur l'entrée de l'utilisateur. Je pense que l'aide d'une expression régulière aiderait. Toujours à la recherche d'une solution parfaite. J'ai un modèle d'erreur mis en œuvre donc pas d'aide concernant la façon de lancer l'erreur requise. – Rohit

+0

S'il existe plusieurs formats, les utilisateurs entreront probablement l'heure dans des formats qui leur conviennent (123 peut être 01h23 ou 02h03). Limitez-vous les formats dans lesquels l'utilisateur peut entrer l'heure? – apoorv020

Répondre

1

Que diriez-vous celui-ci:

class TimeTextBox : TextBox 
{ 
    public Boolean IsProperTime { get; set; } 

    protected override void OnTextChanged(TextChangedEventArgs e) 
    { 
     DateTime time; 

     if (String.IsNullOrEmpty(Text) || !DateTime.TryParse(Text, out time)) 
     { 
      IsProperTime = false; 
     } 
     else 
     { 
      IsProperTime = true; 
     } 

     UpdateVisual(); 

     base.OnTextChanged(e); 
    } 

    private void UpdateVisual() 
    { 
     if (!IsProperTime) 
     { 
      BorderBrush = Brushes.Red; 
      BorderThickness = new Thickness(1); 
     } 
     else 
     { 
      ClearValue(BorderBrushProperty); 
      ClearValue(BorderThicknessProperty); 
     } 
    } 
} 

Vous pouvez modifier le temps de l'analyse logique là-dedans.

1

Regex n'est pas le bon choix ici. Vous avez besoin de convertir une chaîne en une date ou une heure. Utilisez DateTime.TryParse() pour être sûr que si la validation le permet, la conversion fonctionnera également.

Questions connexes