Modification d'un texte

Résolu
thorgal1612 Messages postés 117 Date d'inscription dimanche 14 novembre 2004 Statut Membre Dernière intervention 19 janvier 2008 - 8 juin 2006 à 14:41
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 - 9 juin 2006 à 13:40
Salut à tous,

j'ai encore besoin de votre aide

Je voudrais faire un truc tout simple (enfin il me semble) mais je ne sais pas comment : je voudrais appeler un fonction lorsque je sors d'une textbox (ou richtextbox) uniquement si la valeur a été modifiée ?

J'ai essayé l'évènement Validated mais il est déclenché mais si je ne modifie pas le text
J'ai essayé l'évènement TextChanged mais il est déclenché dès que je modifie la valeur et non pas une fois que je l'ai modifié

Quelqu'un à une idée ??

Merci

23 réponses

woot6768 Messages postés 393 Date d'inscription mercredi 8 mars 2006 Statut Membre Dernière intervention 23 mars 2007
8 juin 2006 à 16:17
Mais cette variable booleenne va ce mettre a 'true' tout de suite lorque tu va commancé à taper du text à mon avis.

_________________________________________________________________________
Woot
Alias Wouter Tjon.
3
thorgal1612 Messages postés 117 Date d'inscription dimanche 14 novembre 2004 Statut Membre Dernière intervention 19 janvier 2008
8 juin 2006 à 19:56
Bon finalement voilà comment j'ai fait :

private

string originalText = null;

privatevoid client_codcomMaskedTextBox_TextChanged(object sender, EventArgs e)
{
   if (originalText != client_codcomMaskedTextBox.Text)
         client_codcomMaskedTextBox.Modified = true;
   else
         client_codcomMaskedTextBox.Modified = false;
}privatevoid client_codcomMaskedTextBox_Enter(object sender, EventArgs e)
{
      //On sauvegarde le text pour savoir s'il a été modifié
      originalText = client_codcomMaskedTextBox.Text;
}

privatevoid client_codcomMaskedTextBox_Leave(object sender, EventArgs e)

{
   this.CodePostal();

}

 
3
woot6768 Messages postés 393 Date d'inscription mercredi 8 mars 2006 Statut Membre Dernière intervention 23 mars 2007
8 juin 2006 à 15:08
Essaye de mettre un bouton pour valider ton text, puis intercepte cet évènement. Pour ensuite appelé la fonction.
Mais je ne pense pas que ce soit la meilleure solution;)

_________________________________________________________________________
Woot
Alias Wouter Tjon.
0
thorgal1612 Messages postés 117 Date d'inscription dimanche 14 novembre 2004 Statut Membre Dernière intervention 19 janvier 2008
8 juin 2006 à 15:24
Merci d'avoir répondu aussi vite mais cette solution ne convient pas avec ce que veux faire.


En fait, cette textbox correspond  à  un code postal et je veux afficher le libellé une fois que l'utilisateur à saisi le texte, l'obliger à un cliquer sur un bouton, c'est pas le terrible.

Merci quand même
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
woot6768 Messages postés 393 Date d'inscription mercredi 8 mars 2006 Statut Membre Dernière intervention 23 mars 2007
8 juin 2006 à 15:38
Effectivement, en faite il faudrait trouver une propriété qui te dise que tu à quitter to, textBox, c'est ça?
Et donc rajouter :
if(textChanged==false)
   break;
else
   taFonction();

Si c'est ça dit le moi, je suis en train de chercher une solution.

_________________________________________________________________________
Woot
Alias Wouter Tjon.
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
8 juin 2006 à 15:40
A la limite, tu peux utiliser une variable booleene que tu mets a true dans ton TextChanged, et lors de l'evenement Validated, tu regardes si cette variable est a true ou non

Mx
MVP C# 
0
thorgal1612 Messages postés 117 Date d'inscription dimanche 14 novembre 2004 Statut Membre Dernière intervention 19 janvier 2008
8 juin 2006 à 16:11
woot, tu mets if(textChanged==false), textChanged est une propriété d'une textbox qui indique si le text a été modifié ?
Parce qu'il existe un événement Leave qui permet de savoir si je quitte la textbox, du coup il faudrait mettre ton code dans cet événement.
Ca devrait fonctionner ?
0
woot6768 Messages postés 393 Date d'inscription mercredi 8 mars 2006 Statut Membre Dernière intervention 23 mars 2007
8 juin 2006 à 16:15
Ce que je t'ais mis n'est pas faisable, il faudrait faire comme MorpionMx le préconise.
Avec ça, ça pourrait marcher je pense.

_________________________________________________________________________
Woot
Alias Wouter Tjon.
0
woot6768 Messages postés 393 Date d'inscription mercredi 8 mars 2006 Statut Membre Dernière intervention 23 mars 2007
8 juin 2006 à 16:19
Où alors, mais ça c'est un peu long comme solution, tu fait un Timer, tu lis ce qu'il y a dans ta textBox tout les x temps, puis lorsque le text de ton textBox est égale au libellé, tu appel ta fonction.

_________________________________________________________________________
Woot
Alias Wouter Tjon.
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
8 juin 2006 à 16:29
>Où alors, mais ça c'est un peu long comme solution, tu fait un Timer, tu lis ce qu'il y a dans ta textBox tout les x >temps, puis lorsque le text de ton textBox est égale au libellé, tu appel ta fonction.



Euh... .
Entre ca et la solution de la variable booleene :
Quelle est la solution la plus facile a mettre en oeuvre ? La moins farfelue ? Et niveau perf  ?

Un peu de bon sens ... On est la pour aider, pas pour dérouter les gens.

Mx
MVP C# 
0
woot6768 Messages postés 393 Date d'inscription mercredi 8 mars 2006 Statut Membre Dernière intervention 23 mars 2007
8 juin 2006 à 16:35
Je suis d'accord avec toi, c'est vachemment lourd.
Mais il voulais appelé ca fonction seulement lorsque l'opérateur a fini d'écrire son texte.
Ce qui n'est pas le cas quand tu utilise ta solution;)

_________________________________________________________________________
Woot
Alias Wouter Tjon.
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
8 juin 2006 à 16:43
Il suffit que dans la méthode associée a l'evenement TextChanged il se désinscrive de cet evenement pour que cette fonction ne soit appelée qu'une seule fois.
Et il se reinscrit a l'evenement lors du Validated.
Mx
MVP C# 
0
thorgal1612 Messages postés 117 Date d'inscription dimanche 14 novembre 2004 Statut Membre Dernière intervention 19 janvier 2008
8 juin 2006 à 16:59
Je vais essayer la solution du booléen et me désinscrire de l'évènement mais ça me semble vraiment étrange qu'il n'y est pas une propriété qui indique si le text a été modifié.
Je peux pas essayer tout de suite je suis au boulot j'essayes ce soir.

Mais s'il existe une autre solution, je suis preneur

Merci  encore
0
woot6768 Messages postés 393 Date d'inscription mercredi 8 mars 2006 Statut Membre Dernière intervention 23 mars 2007
8 juin 2006 à 17:07
MorpionMx->Tu pourrais me dire ce que signifie ce désinscrire?
J'avais jamais entendus ça!

_________________________________________________________________________
Woot
Alias Wouter Tjon.
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
8 juin 2006 à 17:13
bah, tu peux t'inscrire aux evenements, comme ici TextChanged :

this.textBox1.TextChanged +=
new
EventHandler(textBox1_TextChanged);

(Ou comme ca:  this.textBox1.TextChanged +=
this.textBox1_TextChanged; )

Et te desinscrire de l'evenement, ainsi

this.textBox1.TextChanged -=
new
EventHandler(textBox1_TextChanged);

(Ou comme ca :  this.textBox1.TextChanged -= this.textBox1_TextChanged; )

Mx
MVP C# 
0
woot6768 Messages postés 393 Date d'inscription mercredi 8 mars 2006 Statut Membre Dernière intervention 23 mars 2007
8 juin 2006 à 17:25
Ok d'accord.
Merci...

_________________________________________________________________________
Woot
Alias Wouter Tjon.
0
thorgal1612 Messages postés 117 Date d'inscription dimanche 14 novembre 2004 Statut Membre Dernière intervention 19 janvier 2008
8 juin 2006 à 17:36
J'ai une autre idée mais je ne sais pas si c'est possible.


Est ce que l'on peut tester si un évènement a été déclenché ? Si oui, dans le validated je teste si l'évènement textChanged a été déclenché et dans  cas j'appelle ma fonction


Ca peut se faire ?
0
Nikoui Messages postés 794 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 19 août 2008 13
8 juin 2006 à 18:09
C'est exactement ce que te propose de faire MorpionMx depuis le début :

Tu mets un booléen a vrai dans TextChanged, et tu test ce booléen dans Validated...
0
thorgal1612 Messages postés 117 Date d'inscription dimanche 14 novembre 2004 Statut Membre Dernière intervention 19 janvier 2008
8 juin 2006 à 18:41
tout d'abord Nikoui, on commence par "bonjour". Ca fait plus d'1h qu'on échange sur le sujet et tu crois que j'ai pas compris ce que voulait MorpionMx.
Ce que je voulais faire c'était tester l'évènement directement, genre 
   if (textChanged != null) Appelle de la fonction
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
8 juin 2006 à 20:03
Impec, comme ca si l'utilisateur modifie le texte mais revient en arriere dans sa modification, ca agit comme s'il n'avait pas été modifié

Mx
MVP C# 
0
Rejoignez-nous