2011-05-18 58 views
0

只是在練習我的VS 2010的C++在Windows窗體應用程序,我不是一個很長的時間做這個。我想開發其中一個用戶按下一個按鈕,一個簡單的應用程序,然後label1的開始數着Button1的每次用戶印刷機。不知道爲什麼label1沒有遞增1.有人可以告訴問題是什麼嗎?提前致謝?簡單的計數器窗體應用程序C++

編輯 我找到了解決方案,並且我修改了代碼。我會嘗試關閉線程,如果我不能,因爲我有低點,我將嘗試明天。

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


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

回答

-1

這不起作用的原因是雙重的。

  1. 你寫這個問題的方法,你只設置標籤文本一旦,你完成你的「循環」後(*)。所以文字只會改變一次。
  2. 即使您將循環內的分配,你保持主線程忙於在整個功能。你想要的是產卵第二個線程並調用一個委託更改標籤文本,像這樣(C#版本):

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

(*)作爲一個側面說明,你的整個for環路相當於絕對沒有。 j絕不會小於ii開始爲0

+0

想通了。我會嘗試關閉線程,如果我不能,由於我有低點,我會明天再試。 – DiscoDude 2011-05-18 20:15:45

+0

-1不同的語言具有不同特徵的 – 2011-05-18 20:34:49

+0

不同的特點回答?就像調用通用的.NET框架一樣?他們還需要對評論實施負面評分。 – Blindy 2011-05-18 22:30:24