[C#]Condition dans un while

cs_alexis02 Messages postés 10 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 28 mai 2009 - 25 mai 2009 à 15:01
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 - 26 mai 2009 à 10:31
Bonjour,

je suis dans la réalisation d'un programme qui lit des txt et qui traite des donnée par client mais le problème est que je veut crée une condition dans un while pour dire tant que button différent de cliké exécuté instruction.


code:

while(buttonChangerClient !=??????????) //comment crée ma condition pour obtenir l'explication vue au dessus
{
System.Threading.Thread.Sleep(1000);
}

je précise aussi que je suis déjà dans l'événement clik du button!

Merci a vous et Bonne journée.

5 réponses

cs_MoH008 Messages postés 238 Date d'inscription lundi 2 mars 2009 Statut Membre Dernière intervention 29 septembre 2011 1
25 mai 2009 à 15:33
Salut,
j'ai bien compris si je dis :
tu as un button et tu veux que tant que ce button n'est pas cliqué, tu traites tes txt.
Si on clique sur le button on effectue { System.Threading.Thread.Sleep(1000); }.
c'est bien cela?

The possible meet the impossible to become the possimpible !!
0
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
25 mai 2009 à 15:38
Salut

Ce n'est vraiment pas clair...
Tu souhaites que tant que tu ne cliques pas sur le bouton, tu fasses quelque chose, alors que tu te trouves dans une méthode qui n'est appelée que si le bouton est cliqué...

Il va vraiment falloir que tu reformules ta question si tu souhaites que l'on t'aide.

PS : Attention qu'en Thread.Sleep() te "verrouillera" ta fenêtre.

Krimog : while (!(succeed = try())) ;
- NON, "LE BAR" n'est PAS un langage de programmation ! -
0
cs_alexis02 Messages postés 10 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 28 mai 2009
25 mai 2009 à 19:49
Re,

d'abord désoler j'ai vraiment posté sa comme n'importe quoi,donc je reprend tout sa avant cela je précise que je suis sur visual expresse 2008 c#.

j'essaye de réalisé un programme qui aura pour but dans l'ordre les étapes suivantes:

- lire un fichier texte (fichier ordonné en ligne avec des donnés précise selon plusieurs sociétés et bien repartie selon des saut de ligne,etc...)

- récupéré des données lu du fichier dans des textBox pour la premier société

-cliqué sur le bouton pour affiché de nouvelles données concernant la société suivant et ainsi de suite pour la société 3, la 4...

donc je vous expose tout mon code, en sachant que je ne suis pas un pro mais juste un simple débutant voulant apprendre

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace LectureFichierTXTForms
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            String ligne;
            try
            {
                /////////chemin d'accés au fichier text///////
                StreamReader sr = new StreamReader("C:\\har\\cpt\\imp1.txt");

                //Read the first line of text
                ligne = sr.ReadLine();

                //Continue to read until you reach end of file
                while (ligne != null)
                {
                    //write the lie to console window
                    textBoxFichierTXT.Text = textBoxFichierTXT.Text + ligne +Environment.NewLine;           

                   //Read the next line
                    ligne = sr.ReadLine();
                }

                ////////decoupage avec split des differents lignes/////////
                string Fichier = textBoxFichierTXT.Text;

                string[] words = Fichier.ToString().Split('\n');
                foreach (string word in words)
                {
                    textBoxNomClient.Text = words[13].TrimEnd("".ToCharArray());
                    textBoxCodeSo.Text = words[3].TrimEnd("".ToCharArray());
                    textBoxDateEcriture.Text = words[4].Insert(2, "/").TrimEnd("".ToCharArray());
                    textBoxDateEcriture.Text = textBoxDateEcriture.Text.Insert(5, "/").TrimEnd("".ToCharArray());
                    textBoxNumFacture.Text = words[6].TrimEnd("".ToCharArray());
                    textBoxCodeClient.Text = words[11].TrimEnd("".ToCharArray());
                    textBoxDateEcheance.Text = words[15].Insert(2, "/").TrimEnd("".ToCharArray());
                    textBoxDateEcheance.Text = textBoxDateEcheance.Text.Insert(5, "/").TrimEnd("".ToCharArray());
                    textBoxDebit.Text = words[19].TrimEnd("".ToCharArray());
                    textBoxMontant.Text = words[20].TrimEnd("".ToCharArray());
                    textBoxCompteTVA.Text = words[34].TrimEnd("".ToCharArray());
                    textBoxCredit.Text = words[44].TrimEnd("".ToCharArray());
                    textBoxCompteVentes.Text = words[59].TrimEnd("".ToCharArray());

                }

                //////fermeture du fichier/////
                sr.Close();
                Console.ReadLine();
            }

            //////affichage de message si erreur de nom pour le fichier//////
            catch (Exception e)
            {
                MessageBox.Show(e.Message);
            }

        }

        private void buttonChangerClient_Click(object sender, EventArgs e)
        {
                int NombreClick=0;                                      // ICI
                if (buttonChan == )                                      //  SA
                {                                                                //   MERDE
                    NombreClick = NombreClick + 1;       //    UN PEU ;)
                }
                textBox1.Text = Convert.ToString(NombreClick);

                String ligne;
                /////////chemin d'accés au fichier text///////
                StreamReader sr = new StreamReader("C:\\har\\cpt\\imp1.txt");
                

                //Read the first line of text
                ligne = sr.ReadLine();

                //Continue to read until you reach end of file

                int NombreMorceaux = 0;
                int NombreLignes = 0;

                while (ligne !=null)
                {
                    //write the lie to console window
                    textBoxFichierTXT.Text = textBoxFichierTXT.Text + ligne + Environment.NewLine;
                    //Read the next line
                    ligne = sr.ReadLine();
                    //Fonction de comptage du NombreMorceaux
                    NombreLignes++;
                    NombreMorceaux = (NombreLignes / 25) - 3;
                    textBox1.Text = Convert.ToString(NombreMorceaux);
                }

                //////////decoupage avec split des differents lignes/////////
                string Fichier = textBoxFichierTXT.Text;
                string MorceauxFichier = textBox2.Text;

                string[] lines = Fichier.Split('#');
           
                for(int i=5+(NombreClick*3);i<NombreMorceaux;i+=3)
                {
                    textBox2.Text = textBox2.Text+lines[i];
                    
                    string[] words = lines[i].Split('\n'); 
                    textBoxNomClient.Text = words[11].TrimEnd("".ToCharArray());
                    textBoxCodeSo.Text = words[1].TrimEnd("".ToCharArray());
                    textBoxDateEcriture.Text = words[2].Insert(2, "/").TrimEnd("".ToCharArray());
                    textBoxDateEcriture.Text = textBoxDateEcriture.Text.Insert(5, "/").TrimEnd("".ToCharArray());
                    textBoxNumFacture.Text = words[4].TrimEnd("".ToCharArray());
                    textBoxCodeClient.Text = words[9].TrimEnd("".ToCharArray());
                    textBoxDateEcheance.Text = words[13];.Insert(2, "/").TrimEnd("".ToCharArray());
                    textBoxDateEcheance.Text = textBoxDateEcheance.Text.Insert(5, "/").TrimEnd("".ToCharArray());
                    textBoxDebit.Text = words[17].TrimEnd("".ToCharArray());
                    textBoxMontant.Text = words[18].TrimEnd("".ToCharArray());
                           
                    i = i + 1;
                    string[] words2 = lines[i].Split('\n');
                    textBoxCompteTVA.Text = words[7].TrimEnd("".ToCharArray());
                    textBoxCredit.Text = words2[17].TrimEnd("".ToCharArray());

                    i = i + 1;
                    string[] words3 = lines[i].Split('\n');
                    textBoxCompteVentes.Text = words3[7].TrimEnd("".ToCharArray());

                    //while(buttonChangerClient !=Click )       
                    //{                                                
                    //   System.Threading.Thread.Sleep(1000);
                    //}
                    // j'avais pensé a fair un while dand lequelle on tournée en continu                    //tant que l'on ne reclick pas sur le bouton mais je pense que sa                      //n'auré pas marché et ma condition me donne une érreur
        
                    
                    
                /////fermeture du fichier///
                sr.Close();
                }

           }

    }

} 

 
si le code ne s'affiche pas bien desoler car je n'es pas trouvé été les balise pour méttre en forme tout sa!!

Merci a vous et bonne soiré!
0
cs_MoH008 Messages postés 238 Date d'inscription lundi 2 mars 2009 Statut Membre Dernière intervention 29 septembre 2011 1
25 mai 2009 à 20:34
Alors déjà essaie de mettre tout le code qui s'occupe de traiter le fichier (ouverture, lecture .... ) dans une (ou plusieurs) méthode(s)  sans oublier que la méthode peut prendre des arguments. Cela t'évitera de retaper du code,  un appel à la méthode sera suffisant.
De plus, si tu veux compter le nombre total de click sur le bouton, il faudrait que ta variable soit propre à la classe et non à la méthode Click.

N'oublie pas que le code qu'il y a dans la méthode Click ne s'exécute que si tu cliques sur le bouton !!

The possible meet the impossible to become the possimpible !!
0

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

Posez votre question
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
26 mai 2009 à 10:31
Voici un exemple très rapide de code (à adapter évidemment) que tu peux utiliser :

    public partial class Form1 : Form
    {
        private int compteur = 0;
        private int nbLignes;

        public Form1()
        {
            InitializeComponent();
            BoutonLigneSuivante.Click += new EventHandler(BoutonLigneSuivante_Click);
            nbLignes = GetNbLignes();
            ChargeLigneDansLesChamps(compteur);
        }

        private int GetNbLignes()
        {
            // TODO : Ouverture du fichier

            // TODO : Comptage du nombre de lignes

            // TODO : Fermeture du fichier

            // TODO : Renvoie le nombre de lignes
        }

        private void ChargeLigneDansLesChamps(int ligne)
        {
            // TODO : Ouverture du fichier
           
            // TODO : Déplacement dans le fichier d'un nombre de lignes égal à "ligne"

            // TODO : Ecriture des valeurs dans les TextBox

            // TODO : Fermeture du fichier
        }

        private void BoutonLigneSuivante_Click(object sender, EventArgs e)
        {
            if (compteur < nbLignes - 1)
            {
                compteur = compteur + 1;
                ChargeLigneDansLesChamps(compteur);
            }
        }
    }

Je te laisse bien sûr faire toi-même le code des TODO

Krimog : while (!(succeed = try())) ;
- NON, "LE BAR" n'est PAS un langage de programmation ! -
0
Rejoignez-nous