none
incrémenter une variable RRS feed

  • Discussion générale

  • Bonjour;

    J'ai défini une variable  int k;

    dans un classe button_Click  j'ai créer une méthode qui incrémente cette variable.

    private void button7_Click(object sender, EventArgs e ////:calculer

    {

    ...................

    k++;

    .........

    }

    le problème c'est quand je veut afficher cette valeur (k) dans un textBox elle s'affiche 0.

    la seule cas ou elle s'affiche correctement (non nulle) c'est quand j’écris  textBox.text = k.ToString; dans la classe button7_Click.

    au dehors de cette classe la valeur ne s'incrémente pas

    est ce que vous pouvez m'aidez.

    Merci d'avance.

    jeudi 24 mars 2011 11:09

Toutes les réponses

  • Bonjour,

     

    Est-ce cette variable est définie est initialisée a l’intérieur de la classe qui l’incrémente et l’affiche ? Est-il possible de voir votre code ?

     

    Cordialement,

    Alex

    ________________

    Publiez un article sur MSDN !

    Windows Phone 7

    Astuces pour Visual Studio 2010

    XNA – Développement jeux vidéo

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Silverlight, Workflow Foundation, SharePoint, WPF

    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

     


    Suivez MSDN sur Twitter 

    jeudi 24 mars 2011 15:15
  • Bonjour,

     

    Tout d'abord une petite précision, button7_Click, dans votre exemple, n'est pas une classe mais une méthode qui est exécutée, plus que probablement, lors de l'event Click sur le bouton "button7".

    Il serait intéressant de nous préciser l'endroit où la variable k est déclarée ainsi que nous présenter un peu plus de code. Etes-vous certain de ne pas déclaré une variable k de type int à plusieurs endroit dans votre code, en particuliers dans chaque méthode "Click" ?
    jeudi 24 mars 2011 16:41
  • Bonjour,

    j'ai défini la variable k au début de programme

     public partial class Form5 : Form

        { 

    int k;

     

    j'ai changé private void button7_Click(object sender, EventArgs e) par une fonction qui retourne une valeur et ça bien marché. Je pense que le problème été que la valeur de k ne s'actualise pas lorsque je clique sur le bouton malgré que j'ai essayé avec la commande this.Refresh(); 

    vendredi 25 mars 2011 08:27
  • Bonjour,

     

    Est-ce que vous pouvez nous montrer votre code? Je suis intéressé particulièrement par la méthode qui incrémente la variable k, l'endroit ou cette variable est déclarée et initialisée et la méthode qui affiche la variable.

     

    Cordialement,

    Alex


    Suivez MSDN sur Twitter 

    vendredi 25 mars 2011 15:29
  • Le code est trop long j'ai essayer de le minimiser; en effet je parle de 3 paramètres k1,k2,k3 ou je met leurs lieux d'utilisation en gras
    ce code marche car j'ai changé private void button7_Click(object sender, EventArgs e) par une fonction GSM qui retourne un tableau contient ces 3 paramètres.

    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.Data.OleDb;
    using Excel = Microsoft.Office.Interop.Excel;
    using ZedGraph;
    using System.IO;
    using System.Reflection;
    namespace PFE
    {
        public partial class Form5 : Form
        {
            
            
            public int n1, n2; //  n1 : hauteur en pixels ; n2 : largeur en pixels
            OpenFileDialog f = new OpenFileDialog();
            string path_img;
            ColorDialog colorDlg1 = new ColorDialog();
            ColorDialog colorDlg2 = new ColorDialog();
            ColorDialog colorDlg3 = new ColorDialog();
            public Color couleur1, couleur2, couleur3;
            public int seuil1, seuil2, seuil3, seuil4;
            public int index;//pour indiquer l'index de combobox
            public int newindex;//pour indiquer la colonne du KPI
            private Form2 _frm;
            private string c;
            private int k1, k2, k3; //compteur qualité(bonne, moyenne; mauvaix)
            int k;//nombres des mesures
            
                            // Constructeur par défaut
            public  Form5(Form2 frm)
            {
                InitializeComponent();
                textBox8.BackColor = Color.Red;
                textBox9.BackColor = Color.Blue;
                textBox10.BackColor = Color.Green;
                couleur1 = Color.Red;
                couleur2 = Color.Blue;
                couleur3 = Color.Green;
                seuil1 = -110;
                seuil2 = -90;
                seuil3 = -70;
                seuil4 = -43;
                index = 0;
                newindex = 0;
                _frm = frm;
                c = frm.chemin;//////chemin
                
                index = comboBox1.SelectedIndex;
                k = frm.k;
                
            }///////
            
            private void button1_Click(object sender, EventArgs e)
            {
                Form2.ActiveForm.Show();   //retour
                this.Close();
            }
            private void listView1_SelectedIndexChanged(object sender, EventArgs e)
            {
            }
            private void button2_Click(object sender, EventArgs e)// Image
            {
                f.Title = "Choisissez votre fichier";
                f.InitialDirectory = @"c:\";
                f.Filter = "All files (*.*)|*.*|All files (*.*)|*.*";
                f.FilterIndex = 2;
                f.RestoreDirectory = true;
                if (f.ShowDialog() == DialogResult.OK)
                {
                    MessageBox.Show(f.FileName); // parcourir le fichier
                    path_img = f.FileName;
                this.affich_map(path_img);
                } 
            }
            private void textBox1_TextChanged(object sender, EventArgs e)
            {
                 
            }
            private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
            {
                //////////afficher la valeur de ComboBox
                
                if (comboBox1.SelectedIndex == 2)
                {
                    textBox1.Text = "Eb/N0";
                };
                if (comboBox1.SelectedIndex == 1)
                {
                    textBox1.Text = "RX_Qual";
                };
                if (comboBox1.SelectedIndex == 0)
                {
                    textBox1.Text = "RX_lev";
                }; ////////
            }
            private void button3_Click(object sender, EventArgs e)//couleur1
            {
                colorDlg1.SolidColorOnly = false;
                colorDlg1.ShowDialog();
                textBox8.BackColor = colorDlg1.Color;
                couleur1 = colorDlg1.Color;
            }
            private void button4_Click(object sender, EventArgs e)//couleur2
            {
                colorDlg2.SolidColorOnly = false;
                colorDlg2.ShowDialog();
                textBox9.BackColor = colorDlg2.Color;
                couleur2 = colorDlg2.Color;
            }
            private void button5_Click(object sender, EventArgs e)//couleur3
            {
                colorDlg3.SolidColorOnly = false;
                colorDlg3.ShowDialog();
                textBox10.BackColor = colorDlg3.Color;
                couleur3 = colorDlg3.Color;
            }
            
                     
    private void button6_Click(object sender, EventArgs e)
    {
        if (textBox2.Text != null & textBox3.Text != null & textBox5.Text != null & textBox7.Text != null)
        {
            try
            {
                seuil1 = int.Parse(textBox2.Text);
                seuil2 = int.Parse(textBox3.Text);
                seuil3 = int.Parse(textBox5.Text);
                seuil4 = int.Parse(textBox7.Text);
                textBox4.Text = textBox3.Text;
                textBox6.Text = textBox5.Text;
            }
            catch (Exception e1) { }
        }
    }
    private double[] GSM(string c)
     
            // debut du lecture de fichier xls
        string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + c + ";Extended Properties=\"Excel 8.0\";"; // nom complet de la connexion
        OleDbConnection connection = new OleDbConnection(connectionString);
        string cmdText = "SELECT * FROM [Feuil1$]"; // commande (base de données)
        OleDbCommand command = new OleDbCommand(cmdText, connection);
        command.Connection.Open(); // exécution de la commande
        OleDbDataReader reader = command.ExecuteReader();
        if (index == 0) { newindex = 12; } //RX_Lev
        if (index == 1) { newindex = 11; } //
        if (index == 2) { newindex = 11; } //
        k1 = 0;
        k2 = 0;
        k3 = 0;
        while (reader.Read())
        {
            
            if ((reader[1].ToString() != "") && (reader[2].ToString() != ""))
            {
                float longitude = float.Parse(reader[1].ToString().Replace('.', ','));//longitude
                float latitude = float.Parse(reader[2].ToString().Replace('.', ','));//latitude
                float valeur = float.Parse(reader[3].ToString().Replace('.', ','));
                if (valeur > seuil1 && valeur < seuil2)
                { k1++; }
                if (valeur > seuil2 && valeur < seuil3)
                { k2++; }
                if (valeur > seuil3 && valeur < seuil4)
                { k3++; }
               
            }
            
        }
        double[] y = { k3*100/k, k2*100/k, k1 * 100/k };
        richTextBox1.Text = k3.ToString(); richTextBox2.Text = k2.ToString();
       
        return (y);
     }//fin GSM
    // pour modifier le zedgraphcontrol1
    private void Form5_Load(object sender, EventArgs e)
    {
        // Setup the graph
        CreateGraph(zedGraphControl1);
        // Size the control to fill the form with a margin
        SetSize();
    }
    private void Form1_Resize(object sender, EventArgs e)
    {
        SetSize();
    }
    private void SetSize()
    {
        zedGraphControl1.Location = new Point(5, 5);
        // Leave a small margin around the outside of the control
        zedGraphControl1.Size = new Size(ClientRectangle.Width - 400,
                                ClientRectangle.Height - 150);
    }
    //
    // Build the Chart
    private void CreateGraph(ZedGraphControl zgc)
    {
        // get a reference to the GraphPane
        GraphPane myPane = zgc.GraphPane;
        // Set the Titles
        myPane.Title.Text = "My Test Graph\n(For CodeProject Sample)";
        myPane.XAxis.Title.Text = "Qualité";
        myPane.YAxis.Title.Text = "pourcentage (%)";
        // Make up some data arrays based on the Sine function
        string[] labels = { "Bonne", "Moyenne", "Mauvaise" };
        double[] y = GSM(c);//tableau de qualités
        Color[] couleur = { Color.Green, Color.Blue, Color.Red };
        int i = 0;
        BarItem myBar = myPane.AddBar(textBox1.Text.ToString(), null, y,
                                                    Color.Red);
        myBar.Bar.Fill = new Fill(couleur[i], Color.White,
                                                   couleur[i++]);
        // at the labels
        myPane.XAxis.MajorTic.IsBetweenLabels = true;
        // Set the XAxis labels
        myPane.XAxis.Scale.TextLabels = labels;
        myBar.Bar.Fill.IsScaled = true;
        // Set the XAxis to Text type
        myPane.XAxis.Type = AxisType.Text;
        zgc.AxisChange();
        this.Refresh();
    }
                    
        }
        
    }
    vendredi 25 mars 2011 15:45
  • Bonjour,

    voici un petit exemple pour éclairer le concept de visibilité des variables

    using System;
    using System.Windows.Forms;
    
    namespace WindowsFormsApplication1
    {
     public partial class Form1 : Form
     {
     public Form1 ()
     {
      InitializeComponent ();
     }
     int k_global = 10;
    
     private void button7_Click (object sender, EventArgs e)
     {
      k_global++;
      MessageBox.Show ("la valeur de k_globale est " + k_global.ToString ());
      MessageBox.Show ("k_local n'est pas visible ici car dans une procédure différente ");
     }
    
     private void Form1_Load (object sender, EventArgs e)
     {
      int k_local = 1;
      MessageBox.Show ("la valeur de k_local est " + k_local.ToString ());
      MessageBox.Show ("Par contre k_global est visible ici et sa valeur est " + k_global.ToString ());
     }
     }
    }
    


    fred
    vendredi 25 mars 2011 15:46
  • Bonjour,

     

    Dans votre code, la valeur de la variable tableau y dans la ligne :

    double[] y = GSM(c);//tableau de qualités

     

    n’est pas la même que dans le return(y) de la méthode GSM ?

     

    Dans quelle instruction est-ce que vous remarquez une différence entre les valeurs réelles et les valeurs attendues ?

     

    Cordialement,

    Alex

    ________________

    Publiez un article sur MSDN !

    Windows Phone 7

    Astuces pour Visual Studio 2010

    XNA – Développement jeux vidéo

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Silverlight, Workflow Foundation, SharePoint, WPF

    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

     


    Suivez MSDN sur Twitter 

    lundi 28 mars 2011 10:56