kmtaz
Messages postés26Date d'inscriptionsamedi 27 septembre 2008StatutMembreDernière intervention16 juillet 2010
-
20 avril 2009 à 15:50
kmtaz
Messages postés26Date d'inscriptionsamedi 27 septembre 2008StatutMembreDernière intervention16 juillet 2010
-
22 avril 2009 à 09:09
bonjour,
j'ai créé un formulaire de saisis pour mettre à jour des valeurs d'une table dont l'une d'entre elles est obtenu par un produit. Mon problème est que le résultat s'affiche et se mets à jour seulement lorsqu'on essaye de rentrer une valeur dans le textbox conçue.
voici mon code sur le textbox donnant le résultat :
krimog
Messages postés1860Date d'inscriptionlundi 28 novembre 2005StatutMembreDernière intervention14 février 201549 21 avril 2009 à 11:18
Alors enlève ton événement this.NouveauMO.TextChanged +=
new System.
EventHandler(NouveauMO_TextChanged);
et ajoute this.MOinitial.TextChanged += new System.EventHandler(NouveauMO_TextChanged);
this.Syntecinitial.TextChanged += new System.EventHandler(NouveauMO_TextChanged);
this.Synteccourant.TextChanged += new System.EventHandler(NouveauMO_TextChanged);
(tu peux d'ailleurs changer le nom de la méthode NouveauMO_TextChanged(), puisque son nom ne correspond plus)
Krimog : while (!(succeed = try())) ;
- Quand le règlement tu respecteras, ravis de te répondre on sera -
krimog
Messages postés1860Date d'inscriptionlundi 28 novembre 2005StatutMembreDernière intervention14 février 201549 20 avril 2009 à 17:45
Salut
J'ai un peu de mal à comprendre : ta méthode NouveauMO_TextChanged() est exécutée au bon moment mais l'affichage n'est pas mis à jour ou ta méthode n'est pas exécutée au bon moment ?
Krimog : while (!(succeed = try())) ;
- Quand le règlement tu respecteras, ravis de te répondre on sera -
kmtaz
Messages postés26Date d'inscriptionsamedi 27 septembre 2008StatutMembreDernière intervention16 juillet 2010 21 avril 2009 à 08:57
Bonjour,
L'affichage du résultat n'est pas mis à jour automatiquement, c'est en voulant modifier sa valeur qu'il se mets à jour.
Je voudrais qu'il le fasse de manière automatique
krimog
Messages postés1860Date d'inscriptionlundi 28 novembre 2005StatutMembreDernière intervention14 février 201549 21 avril 2009 à 10:04
Je simplifie ma question :
1) Est-ce qu'il rentre dans ta méthode NouveauMO_TextChanged() au moment où tu le souhaites ? (cad au moment où tu veux que l'affichage se mette à jour)
J'aurais aussi besoin d'avoir des précisions en ce qui concerne ton code :
2) NouveauMO est-elle bien la textbox dans laquelle le résultat est censé s'afficher ?
3) Si oui, pourquoi faire le calcul sur le "TextChanged" de cette textbox et non à l'actualisation des données ? (à mon avis, c'est surtout ça le problème)
4) Pourquoi mettre this.NouveauMO.TextChanged +=
new System.
EventHandler(NouveauMO_TextChanged);
à l'intérieur de ton événement ?
5) Pourquoi affecter 2 valeurs à la suite à NouveauMO.Text ?
Krimog : while (!(succeed = try())) ;
- Quand le règlement tu respecteras, ravis de te répondre on sera -
Vous n’avez pas trouvé la réponse que vous recherchez ?
krimog
Messages postés1860Date d'inscriptionlundi 28 novembre 2005StatutMembreDernière intervention14 février 201549 21 avril 2009 à 10:37
1) et 3) sont pas censé être compatibles si 2) est vrai.
Tu dis qu'il doit mettre à jour au changement de valeur des données sources, or théoriquement ton événement est appelé au changement de valeur de la textbox cible.
4) Non seulement il ne sert à rien parce qu'il y en a un autre, mais également parce qu'il serait mal placé. Ça impliquerait que l'événement soit appelé alors même que tu n'as pas défini comment il serait appelé.
Mais en fait, une question plus simple : tu souhaites que la mise à jour soit faite quand ? A la modification des données sources je suppose. Elles sont rentrées à la main dans tes textbox ? Elles sont récupérées depuis une base de données (tu parlais d'une table dans ton 1er message) ?
Krimog : while (!(succeed = try())) ;
- Quand le règlement tu respecteras, ravis de te répondre on sera -
kmtaz
Messages postés26Date d'inscriptionsamedi 27 septembre 2008StatutMembreDernière intervention16 juillet 2010 21 avril 2009 à 10:50
Merci pour ces explications
En fait ma table est vide pour l'instant et le formulaire est là pour la remplir.
Les données sources sont rentrées à la main dans les textbox, et vous l'avez compris je souhaites que la mise à jour soit faite à la modifications de celles-ci.
kmtaz
Messages postés26Date d'inscriptionsamedi 27 septembre 2008StatutMembreDernière intervention16 juillet 2010 21 avril 2009 à 11:47
avec cette modofication, je n'arrive plus a saisir de chiffre dans mes texbox y me mets une erreur de format, pourtant je convertie chaque saisie en double
changer le nom de la méthode entraine des erreur car la modification appelle jsutement cette méthode (+= new System.EventHandler(NouveauMO_TextChanged);)
krimog
Messages postés1860Date d'inscriptionlundi 28 novembre 2005StatutMembreDernière intervention14 février 201549 21 avril 2009 à 11:56
Erreur de format => C'est dès que tu saisis un chiffe ou un point ?
Il faut bien comprendre que ta méthode est appelée à chaque fois que tu changes une valeur. Vérifie donc tout ce qui est division par 0, Parsing impossible...
tu peux essayer de mettre toute ta méthode dans un try catch de ce genre :
try
{
// tout le code actuel
}
catch
{
NouveauMO.Text = "Saisie non valide";
}
Changement du nom => Oui, évidemment, si tu changes le nom, il faut aussi le changer dans l'EventHandler.
Krimog : while (!(succeed = try())) ;
- Quand le règlement tu respecteras, ravis de te répondre on sera -
kmtaz
Messages postés26Date d'inscriptionsamedi 27 septembre 2008StatutMembreDernière intervention16 juillet 2010 21 avril 2009 à 11:57
Excusez-moi mais sa marche en faite, par contre lors de la 1ère saisis des valeurs sources le resultat ne s'affiche que lorsqu'on essaye de saisir une valeur dans le textbox correspondant (Nouveau_MO), et si en modifiant les valeurs sources en vidant complétement un textbox pour en saisir une nouvelle valeure, il me met une erreur de format.
Mais les modifications des valeurs sources en faisiant attention a ne pas vider complétement le champ de la textbox actualise bien le resultat, merci beaucoup pour cette avancée.
kmtaz
Messages postés26Date d'inscriptionsamedi 27 septembre 2008StatutMembreDernière intervention16 juillet 2010 22 avril 2009 à 09:09
j'ai réussi a faire se que je voulais notamment grace à la méthode LostFocus(), je mets mon code qui servira peut-être à d'autres. Merci encore une fois pour votre aide.
public
Formulairesaisie(){
InitializeComponent();
this.MOinitial.KeyPress +=
new
KeyPressEventHandler(Controle_saisie);
this.Syntecinitial.KeyPress +=
new
KeyPressEventHandler(Controle_saisie);
this.Synteccourant.KeyPress +=
new
KeyPressEventHandler(Controle_saisie);
this.NouveauMO.KeyPress +=
new
KeyPressEventHandler(Controle_saisie);
this.MOinitial.TextChanged +=
new
EventHandler(
this.NouveauMO_LostFocus);
this.Syntecinitial.TextChanged +=
new
EventHandler(
this.NouveauMO_LostFocus);
this.Synteccourant.TextChanged +=
new
EventHandler(
this.NouveauMO_LostFocus);
this.MOinitial.LostFocus +=
new
EventHandler(NouveauMO_LostFocus);
this.Syntecinitial.LostFocus +=
new
EventHandler(NouveauMO_LostFocus);
this.Synteccourant.LostFocus +=
new
EventHandler(NouveauMO_LostFocus);
}
private
double Calcule_nouveauMO(){
double initial = 0;
double indicinitial = 0;
double indicourant = 0;
double MO = 0;
double.TryParse(MOinitial.Text,
out initial);
double.TryParse(Syntecinitial.Text,
out indicinitial);
double.TryParse(Synteccourant.Text,
out indicourant);
if (indicinitial > 0)
MO = (initial * indicourant) / indicinitial;