IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Form TextBox contrôle de la saisie


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    System Specialist III
    Inscrit en
    Octobre 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : System Specialist III

    Informations forums :
    Inscription : Octobre 2008
    Messages : 20
    Par défaut Form TextBox contrôle de la saisie
    Bonjour à tous,

    Je cherche désespérément à contrôler la saisie dans une TextBox sur la base d'un regex.

    ce bout de code fonctionne en console simplement changer la valeur de $string pour obtenir true ou false
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $string = "40"
    $pattern = [regex]“(^[1-9]{1})+(\d{1,2})+(\.[1-9]{1})?$” 
    # seulement des chiffres, pas de zéro en première ni derrière le point, entier maximum 3 de long 
    $result =	[Regex]::IsMatch($string, $pattern)
    if($result = "True"){Write-Host $result}

    mon event à compléter:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $objForm.Add_KeyDown({
    # code manquant!	
    })
    J'ai parcouru un nombre considérable de blog et la doc MSDN sans que j'arrive à une solution.

    merci d'avance pour votre aide.
    meilleures salutations
    smooky132

  2. #2
    Membre averti
    Homme Profil pro
    System Specialist III
    Inscrit en
    Octobre 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : System Specialist III

    Informations forums :
    Inscription : Octobre 2008
    Messages : 20
    Par défaut Début de solution
    Bonjour à tous

    j'ai trouvé ce début de solution:

    j'ai changé l'évent de la boîte de texte pour faire apparaître une boîte de saisie et là j'obtiens bien ce que je désire.

    Le mieux serait si je pouvais m'économiser la deuxième boîte de saisie.

    Est ce que quelqu'un pourrait m'orienter vers une solution plus simple.

    Meilleures salutations
    Smooky132


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    $objTextBox_click = ({
    
    $pattern = [regex]“(^[1-9]{1})+(\d{1,2})+(\.[1-9]{1})?$”
    do {
      	$string = Read-Host 'Enter your value'
    	$ok =	[Regex]::IsMatch($string, $pattern)
    
    	if ([string]$ok -eq [string]$false) {
    		[System.Windows.Forms.MessageBox]::Show("Please enter a number!" , "Status")
      		} else {
    			$objTextBox.text = $string
    		}
    } until ( $ok )
    }
    )

  3. #3
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Salut,
    pour ton test tu peux faire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $result = [Regex]::IsMatch($string, $pattern)
    
    if ($result -eq $True) {Write-Host $result}
    Pour valider le contenu de ton Textbox tu peux utiliser la classe System.Windows.Forms.ErrorProvider.

    Un exemple ici, répertoire "Demos\Convert-Form\ErrorProvider\ErrorProvider.ps1"
    Une réécriture de la fonction OnValidating_TxtBoxSaisirNombre en utilisant un Try/Catch reste possible.

  4. #4
    Membre averti
    Homme Profil pro
    System Specialist III
    Inscrit en
    Octobre 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : System Specialist III

    Informations forums :
    Inscription : Octobre 2008
    Messages : 20
    Par défaut ErrorProvider.ps1
    Bonjour,

    Je ne trouve pas le fichier sous le lien que tu m'as fourni.
    Peut être suis je mal réveillé!

    J'ai fait des essai avec try catch, surtout pour attraper l'erreur du bouton cancel ce qui irai dans le sens de ta réponse.
    Je vais faire des test.

    Je pensais qu'il serait aussi possible de suivre chaque saisie de caractère entré par l'utilisateur et de l'avertir si il ne fait pas correctement par rapport au regex.
    C'est peut être compliqué...

    Je te donne le retour dés que j'ai fait mes tests.

    A+

  5. #5
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par smooky132 Voir le message
    Je ne trouve pas le fichier sous le lien que tu m'as fourni.
    Il faut télécharger l'exécutable et l'installer. Je te joins le fichier à renommer en .ps1

    Citation Envoyé par smooky132 Voir le message
    Je pensais qu'il serait aussi possible de suivre chaque saisie de caractère entré par l'utilisateur et de l'avertir si il ne fait pas correctement par rapport au regex.
    C'est peut être compliqué...
    Une info bulle sur le champ + un errroprovider me semble suffisant. Tu peux ajouter un masque de saisie autorisant que des chiffres.
    Fichiers attachés Fichiers attachés

  6. #6
    Membre averti
    Homme Profil pro
    System Specialist III
    Inscrit en
    Octobre 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : System Specialist III

    Informations forums :
    Inscription : Octobre 2008
    Messages : 20
    Par défaut errorprovider
    Salut Laurent,

    Un très grand merci pour ton support.
    J'ai modifié mon code avec tes informations et la function "OnValidating_TxtBoxSaisirNombre" comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function OnValidating_TxtBoxSaisirNombre{
    #Evénement déclenché lors de la validation, dés que le composant perd le focus.
    $pattern = [regex]"^[1-9]\d{0,2}?(\.[1-9]{1})?$"
    
    	$result = [Regex]::IsMatch($objTextBox.text, $pattern)
    	if ($result -eq $True) {
    		Write-Host "hello ca joue! " $result
    		}else{
    		$errorProvider1.SetError($objTextBox, "Le texte saisie n'est pas un nombre.")
    		}
    }
    J'aurai une question par rapport à mon formulaire. Il contient cinq boîtes de texte de saisie pour lesquelles je devrai appliquer le même mécanisme.

    Comment puis je trouver le nom de l'objet pour l'avoir en dynamique dans les deux functions, histoire de réduire au minimum le code?
    un seul $errorProvider1 suffit t'il?

    Merci d'avance
    A+

Discussions similaires

  1. Réponses: 2
    Dernier message: 26/12/2006, 17h33
  2. contrôle de la saisie dans 1 TStringGrid
    Par OutOfRange dans le forum Delphi
    Réponses: 2
    Dernier message: 13/11/2006, 20h56
  3. Contrôle de la saisie d'un formulaire
    Par beegees dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 09/09/2006, 15h29
  4. Mise en forme txt différente de la saisie ?
    Par PuppeT mAsTer dans le forum Langage
    Réponses: 2
    Dernier message: 26/07/2006, 11h44
  5. [C#][VS2005]Contrôle utilisateur et saisie TextBox
    Par caelum dans le forum Windows Forms
    Réponses: 2
    Dernier message: 19/04/2006, 21h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo