2012-04-21 38 views
1

好,讓我解釋我的問題。保持變量值的C++/CLI多個按鈕

我正在做一個程序,我有一個按鈕。點擊它會導致數字「1」出現,然後,再次點擊會增加該值直到達到「9」的值。 (這是一個字符串)。我寫了這段代碼,它聲明一個int變量爲0(是的,這是一個錯誤,但讓我繼續),然後增加它並解析它以字符串並顯示在按鈕文本上(這是按鈕單擊時執行的代碼):

private: System::Void a0_Click(System::Object^ sender, System::EventArgs^ e) { 
      int i = 0; 
      i++; 
      a0->Text = i.ToString(); 
     } 

然而,正如你可以懷疑,我做了聲明0我爲每個按鈕按下的愚蠢,所以結果是,1爲顯示按鈕上的唯一價值。接下來我嘗試做的事情是將我聲明爲全局變量,值爲0.但是,我遇到了另一個問題。我有82種那種類型的按鈕,我正在尋找我能找到的最簡單的溶劑,所以共享我的變量似乎是合理的,

接下來的問題是,如果我按了5次第一個按鈕,顯示的數字它會是「5」,但是如果我按另一個按鈕,默認值不會是「1」,它會是「6」(第一個按鈕的值增加1)。基本上它會繼承第一個的價值。

現在我處於死路一條。我不知道該怎麼做。我試着用我和i2,但我只是追着我自己的尾巴。有沒有一個非常簡單的解決方案?請記住我有82個按鈕(是的,我知道它很多),默認爲0.當我點擊每一個時,我需要它從遞增1,從0開始。有任何想法嗎?

注意:操作系統是Windows XP,IDE是使用Windows窗體應用程序,C++/CLI的Visual Studio 2010m。如果我忘記在評論中提及任何帖子,我會添加它。

+0

帶有82個按鈕的用戶界面令我的想象力變得難以琢磨。很難解碼他們應該從問題中做出什麼。添加屏幕截圖。 – 2012-04-21 16:52:14

+0

@Hans Passant,我知道這很棒,這是一款遊戲,我有一個9x9的棋盤。我沒有任何其他選擇,而不是按鈕。每個在我的程序中都有一個簡單的用處。 9x9板上的每塊瓷磚都是一個按鈕。 – Bugster 2012-04-21 16:53:56

+0

嗯,當然可以。繪製9x9板的繪畫事件的面板也起作用。現在你只有一個MouseDown事件。找出從電子郵件中點擊的內容 – 2012-04-21 16:55:35

回答

2

您可以檢查sender以查明單擊了哪個按鈕。

void anybutton_Click(System::Object^ sender, System::EventArgs^) 
{ 
    Button^ btn = dynamic_cast<Button^>(sender); // or safe_cast 
    int i; 
    if (System::Int32::TryParse(btn->Text, i)) { 
     i++; 
     btn->Text = i.ToString(); 
    } 
}