在visual c ++中迭代PictureBoxes

时间:2013-11-30 22:39:53

标签: visual-c++ picturebox

我正在用visual c ++编程,我有大约60张图片(索引为p0 ... p63)。我想创建一个遍历所有图片的循环,并在某些条件下更改ImageLocation

我想到Tag属性,我的一次尝试是这样的: 我将我的照片标记为0到63,然后尝试以下操作:

for(int i=0; i<64; i++)
{
    PictureBox->Tag[i]->ImageLocation="possible-.gif";
}

它没有用......我收到了这个错误:

syntax error : missing ';' before '->'        line: 1514
syntax error : missing ';' before '->'        line: 1514

(两次,同一行)

这样做的正确方法是什么?

谢谢!

编辑:

好的,现在我将图片放在一个数组中。有没有办法为所有人制定共同规则?我想为每张图片制作一个点击事件。是独立设置规则的唯一方法吗?或者我可以通过以下方式为数组本身设置规则:

if(Pictureboxes[i]_Clicked)
{
    Pictureboxes[i].something = "something else";
}

1 个答案:

答案 0 :(得分:1)

我找到了解决问题的方法。所以我想我会回答自己:

我制作了一个PictureBoxes数组:

private: static array<System::Windows::Forms::PictureBox^>^ pictures=(gcnew array<System::Windows::Forms::PictureBox^>(64));

并用图片填充:

pictures[0] = p0;
pictures[1] = p1;
pictures[2] = p2;
...

然后我点击了每张图片来创建click_events。 在每次活动中我输入了这个:

int place = (/*pic number*/);
IndexOf(pictures);

此代码向名为IndexOf的函数发送我单击的图片。 这是IndexOf():

static System::Void IndexOf(int& place)
{
    int flag = 0;
    if(pictures[place]->ImageLocation == "possible-.bmp")
    {
        flag = 1;
        /*DO CODE*/
    }
    if(flag)
        /*OTHER CODE*/
}

现在,我可以在/ 执行代码 /上面为照片[i]做任何我想要的代码。