好的,让我解释一下我的问题。
我正在制作一个程序,我有一个按钮。单击它会显示数字“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是按钮上显示的唯一值。接下来我尝试做的事情是将i声明为值为0的全局变量。但是,我遇到了另一个问题。我有82个这样的按钮,我想找到我能找到的最简单的解决方案,所以共享i变量似乎合乎逻辑,
下一个问题是如果我按下第一个按钮5次,它上面显示的数字将是“5”,但是如果我按下另一个按钮,默认情况下该值不会是“1”,它将是“ 6“(第一个按钮的值加1)。基本上它会继承第一个的值。
现在我走到了尽头。我不知道该怎么做。我尝试使用i和i2,但我只是追逐自己的尾巴。有一个非常简单的解决方案吗?请记住,我有82个按钮(是的,我知道它很多),默认情况下为0.当我点击每个按钮时,我需要它从<0>开始增加一个。有什么想法吗?
注意:操作系统是Windows XP,IDE是使用Windows窗体应用程序,C ++ / CLI的Visual Studio 2010m。如果我忘记在评论中提及任何内容,我会添加它。
答案 0 :(得分: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();
}
}