开发者

How to create an array of buttons in C++

开发者 https://www.devze.com 2022-12-27 21:29 出处:网络
I\'m using C++ in VS2005 and have an 8x8 grid of buttons on a form. I want to have these buttons in an array, so when I click on any of them it will open the same event handler (I think that is what t

I'm using C++ in VS2005 and have an 8x8 grid of buttons on a form. I want to have these buttons in an array, so when I click on any of them it will open the same event handler (I think that is what they are called), but I will know the index of which one was clicked on. I know how to do this in VB and C#, but I can't seem to figure it out with C++ Right now开发者_如何转开发 I have all my buttons labelled by their location, i.e. b00, b10, b21, etc. So I think what I am looking for is a way to do something like this:

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;
...
}

and then in 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
}

Any help would be appreciated. Also let me know if I am going in the complete wrong direction with this. Thanks!


Use a cli::array to store an array of a CLI type. For example, to create an 8x8 two-dimensional array like in your question, you can use:

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

See MSDN for more information about cli::array.


You don't need an array for this. Wire all the buttons up to the same event handler function, then parse the coordinates from the sender's name.

0

精彩评论

暂无评论...
验证码 换一张
取 消