1

好的,让我解释一下我的问题。

我正在开发一个有按钮的程序。单击它会导致数字“1”出现,然后,任何进一步的单击都会增加该值,直到达到“9”的值。(这是一个字符串)。我编写了这段代码,它将一个 int 变量声明为 0(是的,这是一个错误,但让我继续)然后将其递增并将其解析为字符串并显示在按钮文本上(这是在按钮单击时执行的代码):

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

但是,正如您可能怀疑的那样,我在每次按下按钮时都将 i 声明为 0 是愚蠢的,因此结果是 1 是按钮上显示的唯一值。我尝试做的下一件事是将 i 声明为值为 0 的全局变量。但是,我遇到了另一个问题。我有 82 个这样的按钮,我正在寻找我能找到的最简单的解决方案,所以共享 i 变量似乎是合乎逻辑的,

下一个问题是,如果我按下第一个按钮 5 次,则显示在其上的数字将为“5”,但是如果我按下另一个按钮,则默认值不会是“1”,而是“6”(第一个按钮的值加一)。基本上它会继承第一个的价值。

现在我走到了死胡同。我不知道该怎么做。我尝试使用 i 和 i2 但我只是在追逐自己的尾巴。有一个非常简单的解决方案吗?请记住,我有 82 个按钮(是的,我知道它很多),默认为 0。当我单击每个按钮时,我需要它从 0 开始递增一。有任何想法吗?

注意:操作系统是 Windows XP,IDE 是 Visual Studio 2010m,使用 Windows 窗体应用程序、C++/CLI。如果我忘记在评论中提及任何帖子,我会添加它。

4

1 回答 1

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();
    }
}
于 2012-04-21T17:28:40.997 回答