2

我在 VS2005 中使用 C++,并且在表单上有一个 8x8 的按钮网格。我想将这些按钮放在一个数组中,因此当我单击其中任何一个按钮时,它将打开相同的事件处理程序(我认为这就是它们的名称),但我会知道单击了哪个按钮的索引。我知道如何在 VB 和 C# 中做到这一点,但我似乎无法用 C++ 弄清楚现在我的所有按钮都标有它们的位置,即 b00、b10、b21 等。所以我想我是什么寻找是一种方法来做这样的事情:

Button b[8][8]; //this causes me errors (error C2728: 'System::Windows::Forms::Button' : a native array cannot contain this managed type) and (error C2227: left of '->{ctor}' must point to class/struct/union/generic type)   

void Assignment(){
b[0][0] = b00;
b[1][0] = b10;
...
}

然后在 form1.h 中:

private: System::Void b_Click(System::Object^  sender, System::EventArgs^  e) {
//somehow read the coordinates into variables x and y
//do something based on these values
}

任何帮助,将不胜感激。如果我的方向完全错误,也请告诉我。谢谢!

4

2 回答 2

3

使用 acli::array存储 CLI 类型的数组。例如,要在您的问题中创建一个 8x8 二维数组,您可以使用:

cli::array<Button^, 2>^ b = gcnew cli::array<Button^, 2>(8, 8);

有关cli::array.

于 2010-04-25T03:28:53.723 回答
1

你不需要一个数组。将所有按钮连接到同一个事件处理函数,然后从发送者的名称解析坐标。

于 2010-04-25T03:29:05.163 回答