2011-05-18 4 views
0

Je pratique mon C++ vs 2010 dans Windows Form Applications, je n'ai pas fait cela depuis très longtemps. J'essaie de développer une application simple où un utilisateur appuie sur un bouton, puis label1 commence à compter chaque fois que l'utilisateur appuie sur ce bouton1. Vous ne savez pas pourquoi label1 n'augmente pas de 1. Quelqu'un peut-il dire quel est le problème? Merci d'avance?Compteur simple sous Windows Forms Application C++

EDITED J'ai trouvé la solution et j'ai modifié le code. Je vais essayer de fermer le fil et si je ne peux pas, à cause de mes points bas, je vais essayer demain.

namespace Counter 
    { 
     int counter = 0; 
    //some additional namespaces 


    private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) 
     { 
      counter++; 
      label1->Text = counter.ToString(); 
        } 

Répondre

-1

La raison pour laquelle cela ne fonctionne pas est double.

  1. La façon dont vous avez écrit cela, vous ne définissez le texte de l'étiquette une fois, après avoir terminé votre « boucle » (*). Donc le texte ne changera qu'une fois.
  2. Même si vous déplacez l'affectation à l'intérieur de la boucle, vous maintenez le thread principal occupé pendant toute la durée de la fonction. Ce que vous voulez est de lancer un deuxième fil et invoquer un délégué pour modifier le texte de l'étiquette, quelque chose comme ceci (version C#):

    void StartCounting() 
    { 
        var thread=new Thread(()=> 
        { 
        for(int i=0;i<10;++i) 
         label1.Invoke((MethodInvoker)()=>{label1.Text=i.ToString();}); 
        } 
    } 
    

(*) Comme une note de côté, toute votre boucle for est équivalent à absolument rien. j ne sera jamais inférieur à i lorsque i commence par 0.

+0

trouvé. Je vais essayer de fermer le fil et si je ne peux pas, à cause de mes points bas, je vais essayer demain. – DiscoDude

+0

-1 pour répondre dans une langue différente avec des fonctionnalités différentes –

+0

Différentes fonctionnalités? Comme appelant sur le cadre commun .NET? Ils doivent également mettre en place des scores négatifs pour les commentaires. – Blindy

Questions connexes