Un résultat final capricieux. Le "comment faire" viendra d'où???

divin1975 Messages postés 81 Date d'inscription mardi 7 juin 2011 Statut Membre Dernière intervention 9 novembre 2013 - 8 juin 2011 à 22:43
BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 - 9 juin 2011 à 21:05
Salut à Tous!

Suis-je un débutant à la plate-forme C#?
Bien sûr, je le suis! Mais j'aimerai être aidé dans ce forum afin d'aider aussi les autres. Voilà pourquoi mes questions sont très objectives et precises.

Sur mon form, j'ai trois textbox3 (quantite, valeurUnitaire et Resultat) et un button. Dans ce cas, j'utilise un button pour faire un teste pour voir mes code marcheraient. Ça marche bien!

La manière que j'aimerai faire fonctionner ces codes c'est d'utiliser la touche de validation "Entrer".
Voici ce que j'ai fait pour faire marcher ma logique. Mais en vain:

private void quantite_KeyPress object sender, [color=gray]KeyPressEventArgs e)
{
double quantite = 0.00;
double valorUnitaire = 0.00;
double valeurTotal;
if (e.KeyChar == (char)Keys.Return)
{
valorUnitaire.Focus();
}
{

valeurTotal = (quantite * valorUnitaire);
valeurTotal.Text = valeurTotal.ToString("F");
}
}

En conclusion, quand je presse sur "Entrer". J'ai pas de resultat dans mon textbox "valeurTotal". Mais en utilisant ces codes dans un boutton. Tout marche! Comment faire???

Merci,

7 réponses

cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
9 juin 2011 à 09:21
Salut,

il ne manque pas des morceaux dans ton code ? Je comprends pas bien le bloc non conditionné après ton if. Sinon quelques remarques :
- a ta place je donnerais un nom différent à mon contrôle et ma variable locale (cf. valeurTotal),
- à aucun moment tu ne définis d'autres valeurs que 0 (zéro) pour tes variables quantite et valorUnitaire -> valeurTotal ne peut être qu'égale à 0 (zéro).

Si tu as déjà implémenter ton calcul dans l'event d'un bouton tu pourrais simplement faire un truc du genre :
// soit btnValidate_Click la fonction associée à l'event de ton bouton
private void quantite_KeyPress(object sender, KeyPressEventArgs e) {
if (e.KeyChar == (char)Keys.Return)
btnValidate_Click(null, null);
}
0
divin1975 Messages postés 81 Date d'inscription mardi 7 juin 2011 Statut Membre Dernière intervention 9 novembre 2013
9 juin 2011 à 10:31
Merci pour tes conseils de logique.
Mais je crois que je me suis fait bien comprendre.
Bem je change de stratégie,

//Ok, ces codes marches très bien en cliquant sur mon boutton.


private void testTotal_Click(object sender, EventArgs e)
{
double quantite = 0.00;
double valeurUnitaire = 0.00;
double valeurTotal;

try
{
quantite = double.Parse(QTD_facture.Text);
}
catch (FormatException)
{
MessageBox.Show("Valeur invalide");
}
try
{
valeurUnitaire = double.Parse(valeurUnitaire_facture.Text);
}
catch (FormatException)
{
MessageBox.Show("Valeur invalide");
}

valeurTotal = (quantite * valeurUnitaire);
valeurTotal_facture.Text = valeurTotal.ToString("F");

}


Et ces codes de validation ci-bas devraient être associé aux codes (ci-haut).

if (e.KeyChar == (char)Keys.Return)
{
valorUnitaire.Focus();
}
0
BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 103
9 juin 2011 à 10:47
Yop,
Mais je crois que je me suis fait bien comprendre.

Ben...pas vraiment.
Comme le dis jopop, dans ta méthode KeyPress, tu ne récupères pas les valeurs des champs, ils sont tous à zéro.
Généralement, si on veut que 2 actions utilisateurs déclenchent le même "code", on l'externalise dans un fonction dédiée:

private void testTotal_Click(object sender, EventArgs e)
{
   computeValues();
}

private void quantite_KeyPress(object sender, KeyPressEventArgs e)
{
  if (e.KeyChar == (char)Keys.Return)
  {
    computeValues();
  }
}

private void computeValues(void)
{
  // récupération des valeurs
  // calcul
  // mise à jour de la textBox résultat
}


Par contre, y'a un truc que je pige pas: que veux-tu faire exactement quand tu appuies sur Entrée: lancer le calcul ou bien aller à la textbox suivante?

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
divin1975 Messages postés 81 Date d'inscription mardi 7 juin 2011 Statut Membre Dernière intervention 9 novembre 2013
9 juin 2011 à 12:19
avant d'essayer les codes @buno. J'informe que toutes ces operations se font comme ceci:
1) insertion d'une donnée numérique dans le textbox "quantite" (presser sur la touche "Entrée" pour passer au textbox "valeurUnitaire")
2) du textbox "valeurUnitaire", quand je clique sur "Entrée". Le resulat apparait dans le textbox "valeurTotal". Voilà tout!

Merci.
0

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

Posez votre question
BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 103
9 juin 2011 à 13:44
Ah bah ok. Dans ce cas, dans la méthode KeyPress, tu dois faire un test suivant le sender:
- soit le sender est la 1ère textBox: dans ce cas, tu passes à la seconde
- soit le sender est la 2nde: dans ce cas, tu affiches le résultat


@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
divin1975 Messages postés 81 Date d'inscription mardi 7 juin 2011 Statut Membre Dernière intervention 9 novembre 2013
9 juin 2011 à 19:28
Merci d'avoir fait un effort @buno. Mais je serai sincère avec toi. J'ai essayé avec exactitude comme tu l'as prescris. Pas de resulat! Et alors, qu'ai-je fait?
J'ai juste mis dans le "keyPress" du textbox "valeurUnitaire", un "button.Focus" afin que l'opération s'exécute OBLIGATOIREMENT. C'est pas trop ce que je voulais. Mais je n'en peux rien. On ne va pas s'éterniser dessus. Sincèrement MERCI...
0
BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 103
9 juin 2011 à 21:05
Le fait de mettre le focus sur le bouton ne va exécuter aucun code. C'est l'appui sur la touche Entrée qui va lancer le calcul...


@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
Rejoignez-nous