Gérer le forum:  Aide  •  Rechercher  •  Liste des Membres  •  Groupes d'utilisateurs   •  S'enregistrer  •  Profil  •  Se connecter pour vérifier ses messages privés  •  Connexion 
 [Visual C#] Empêcher l'utilisateur de quitter une textBox Voir le sujet suivant
Voir le sujet précédent
Poster un nouveau sujetRépondre au sujet
Auteur Message
Strato
Résident du forum
Résident du forum


Ecole d'Ingénieurs
Sexe: Sexe:Masculin
Messages: 250
Localisation: Paris

MessagePosté le: Mer 10 Jan 2007 - 12:45 Répondre en citantRevenir en haut

Salut les jeunes!

Alors voilà, c'est pas compliqué, j'ai une textBox et je veux que l'utilisateur saisisse dedans un nombre entre 0 et 25.

- S'il saisit une mauvaise valeur (méthode TextChanged), je veux qu'un message d'erreur apparaisse et que la valeur dans la textBox soit resélectionnée (ça à priori ça marche).

- S'il quitte la textBox (méthode Leave) alors que la valeur saisie n'est pas bonne, je veux aussi qu'un message d'erreur, apparaisse, que la valeur dans la textBox soit resélectionnée et... que l'utilisateur soit par conséquent empêché de quitter la textBox tant que la valeur n'est pas conforme à ce qui est attendu.

Et là c'est le drame...

Voilà ma tentative.

Le résultat, c'est que le message d'erreur s'affiche bien, on clique sur OK, la textBox est bien reselectionné, MAIS! le message d'erreur se réaffiche aussitôt, on reclique sur OK, et là la textBox est bien quittée et le curseur va là où l'utilisateur l'avait demandé (c'est ça qu'il faudrait court-cicuiter).

Je ne sais pas si ça peut influer mais j'ai une autre méthode (contenant exactement le même code) pour l'événement TextChanged.

Autre chose : si je passe par un "sender" c'est parce que cette méthode peut être appellée par 19 textBox différentes. Mais j'avais déjà le problème sur une seule.

Merci beaucoup pour toute l'aide que vous pourrez m'apporter.


Dernière édition par Strato le Sam 13 Jan 2007 - 13:23; édité 1 fois
Voir le profil de l'utilisateurEnvoyer un message privé

N'oubliez pas de vous inscrire à la communauté pour participer. Si vous êtes déjà membre, connectez-vous pour faire disparaître ce bandeau publicitaire.
Strato
Résident du forum
Résident du forum


Ecole d'Ingénieurs
Sexe: Sexe:Masculin
Messages: 250
Localisation: Paris

MessagePosté le: Mer 10 Jan 2007 - 17:56 Répondre en citantRevenir en haut

J'ai un début d'idée de la source du problème, mais je ne pourrais pas la tester avant lundi. Je vous tiens au courant.
Voir le profil de l'utilisateurEnvoyer un message privé
telynor
Résident du forum
Résident du forum


Post-BTS
Sexe: Sexe:Féminin
Messages: 345
Localisation: IDF

MessagePosté le: Mer 10 Jan 2007 - 19:39 Répondre en citantRevenir en haut

Il faut utiliser les composant ErrorProvider pour ca
Voir le profil de l'utilisateurEnvoyer un message privéMSN Messenger
telynor
Résident du forum
Résident du forum


Post-BTS
Sexe: Sexe:Féminin
Messages: 345
Localisation: IDF

MessagePosté le: Mer 10 Jan 2007 - 19:43 Répondre en citantRevenir en haut

Sinon pour le
int test = Int32.Parse(TBtest.Text);

Si l'utilisateur saisie des lettre ca va planter utiliser plutot un TryParse Smile ce qui doit pouvoir te dispenser du try catch
Voir le profil de l'utilisateurEnvoyer un message privéMSN Messenger
Strato
Résident du forum
Résident du forum


Ecole d'Ingénieurs
Sexe: Sexe:Masculin
Messages: 250
Localisation: Paris

MessagePosté le: Jeu 11 Jan 2007 - 11:34 Répondre en citantRevenir en haut

Merci pour tout ça. Je ne connaissais pas le TryParse et ça va m'être souvent utile.

Quand au ErrorProvider, je n'avais jamais vu ça dans aucune application. Ça n'a pas l'air très utilisé mais c'est intéressant. Même si c'est très "visuel" le nombre d'options est limité (pas de bip par exemple) et ça n'empêchera pas mes utilisateurs de mettre de mauvaises données. Je crois que je vais essayer de mélanger ça avec ma volonté de court-circuiter l'événement "Leave".

La raison pour laquelle j'avais mes MessageBox et FolderBrowser qui s'ouvraient systématiquement en double, c'est parce que j'avais tous les this.blablabla += blablaEventHandler_Click sous "initialize components();" alors qu'il avait déjà dû me les mettre dans le fichier Form1_Designer.cs. Je vérifierai tout ça lundi.

Sinon j'ai une nouvelle question : par exemple si j'ai une ComboBox avec 5 valeurs, dont une est sélectionnée par défaut au lancement de mon application, est-ce que je peux faire en sorte qu'en cliquant sur un bouton "Par Défaut" l'utilisateur puisse modifier laquelle des 5 valeurs doit être sélectionnée par défaut aux prochains lancements de l'appli ?
Voir le profil de l'utilisateurEnvoyer un message privé
telynor
Résident du forum
Résident du forum


Post-BTS
Sexe: Sexe:Féminin
Messages: 345
Localisation: IDF

MessagePosté le: Jeu 11 Jan 2007 - 11:57 Répondre en citantRevenir en haut

Strato a écrit:

Quand au ErrorProvider, je n'avais jamais vu ça dans aucune application. Ça n'a pas l'air très utilisé mais c'est intéressant. Même si c'est très "visuel" le nombre d'options est limité (pas de bip par exemple) et ça n'empêchera pas mes utilisateurs de mettre de mauvaises données. Je crois que je vais essayer de mélanger ça avec ma volonté de court-circuiter l'événement "Leave".


De memoire si tu peux empecher l'utilisateur de sortir de la textbox avec l'error provider c'est son role de verifier la saisie justement. (et pour l'accesibilité je pense que ca doit pouvoir biper)

Citation:

Sinon j'ai une nouvelle question : par exemple si j'ai une ComboBox avec 5 valeurs, dont une est sélectionnée par défaut au lancement de mon application, est-ce que je peux faire en sorte qu'en cliquant sur un bouton "Par Défaut" l'utilisateur puisse modifier laquelle des 5 valeurs doit être sélectionnée par défaut aux prochains lancements de l'appli ?


Pour modifier la valeur par default il faut l'enregistrer soit en base, soit dans un fichier txt, soit dans l'uml soit dans un app.config (editable via l'application depuis 2005)
Voir le profil de l'utilisateurEnvoyer un message privéMSN Messenger
Strato
Résident du forum
Résident du forum


Ecole d'Ingénieurs
Sexe: Sexe:Masculin
Messages: 250
Localisation: Paris

MessagePosté le: Sam 13 Jan 2007 - 13:22 Répondre en citantRevenir en haut

Voilà ça marche.

En fait il faut utiliser l'événement "Validating" pour empêcher l'utilisateur de quitter la textBox, avec le CancelEventArgs à true. ErrorProvider ne permet pas du tout ça, c'est juste un bouton qui clignote à côté de la Windows Form.

Pour utiliser les sons de Windows avec le Framework 2.0, il faut ajouter l'espace de noms "using System.Media;" et utiliser "SystemSounds". Par exemple :
Code:
SystemSounds.Asterisk.Play();


On peut aussi obtenir les bip "speaker" avec :
Code:
Console.Beep();
Voir le profil de l'utilisateurEnvoyer un message privé
telynor
Résident du forum
Résident du forum


Post-BTS
Sexe: Sexe:Féminin
Messages: 345
Localisation: IDF

MessagePosté le: Dim 14 Jan 2007 - 14:26 Répondre en citantRevenir en haut

Le bouton rouge qui clignote ca n'est que la partie visible de l'errorprovider ..
Voir le profil de l'utilisateurEnvoyer un message privéMSN Messenger
Montrer les messages depuis:      
Poster un nouveau sujetRépondre au sujet
 Sauter vers:   



Voir le sujet suivant
Voir le sujet précédent
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum