2014-08-30 128 views
0

在C#中,我正在制作平台游戏。地形是pictureboxes,并与碰撞系统例如。我需要有1个名字才能引用多个选定的图片框,因为它与另一个图片框会产生相同的功能太多的代码。 所以,例如,如果“picturebox1”和“picturebox2”被引用为“pictureall”,然后,如果执行这样的代码:引用具有1个名称的多个对象/变量

pictureall.Visible = false; 

既“picturebox1”和“picturebox2”将是不可见的。那么,我怎样才能参考(在这个例子中)带有1个名字的2个picturebox?

编辑: 我主要打算在If语句中使用它。所以,举个例子: if(pictureall.Visible == true)MessageBox.Show(“true”); 如果任何 picturebox是可见的,这是事实。

/维克托

+4

使用数组或其他集合让你可以快速遍历所有pictureboxes – 2014-08-30 17:56:47

回答

1

您创建一个名为Grouppictures

  1. 这将包含名单的图片作为成员变量
  2. 一种方法SetVisibility(布尔可见)
  3. 在上述方法中的自定义类你将循环并设置所有图片的可见性
  4. 但您将调用方法为GrouppicturesObj.SetVisibity(false);
+0

根据您的编辑..你仍然可以通过添加一个方法来解决这个问题d返回可见性状态(基本上遍历它包含的图像并检查其可见性并返回状态)。你在if条件下使用if(GroupPicturesObj.GetVisibility()== true) – 2014-08-30 18:16:34

+0

谢谢,你给了我一个主意。 – thesTeel8 2014-08-30 18:40:19

0

如果你不想为纪V M建议使用自定义的集合类,你可以把的图片框选择一个集合中,如List<T>和使用可用的(扩展)的方法,例如

List<PictureBox> pictureBoxes = new List<PictureBox>(); 

// fill the list 
pictureBoxes.Add(...); 

// do something to all boxes in the list 
pictureBoxes.ForEach(box => box.Visible = true); 

// ask something about the boxes in the list 
if (pictureBoxes.Any(box => box.Visible)) 
{ 
    // at least one box visible 
} 
// or: 
if (pictureBoxes.All(box => box.Visible)) 
{ 
    // all boxes visible 
} 

参考文献:

相关问题