Как создать массив кнопок в C ++ - PullRequest
2 голосов
/ 25 апреля 2010

Я использую C ++ в VS2005 и имею сетку кнопок 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
}

Любая помощь будет оценена. Также дайте мне знать, если я иду в совершенно неправильном направлении с этим. Спасибо!

Ответы [ 2 ]

3 голосов
/ 25 апреля 2010

Используйте cli::array для хранения массива типа CLI. Например, для создания двумерного массива 8x8, как в вашем вопросе, вы можете использовать:

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

См. MSDN для получения дополнительной информации о cli::array.

1 голос
/ 25 апреля 2010

Вам не нужен массив для этого. Подключите все кнопки к одной и той же функции-обработчику событий, а затем проанализируйте координаты из имени отправителя.

...