C# 引用具有一个名称的多个对象/变量

C# 引用具有一个名称的多个对象/变量,c#,variables,object,reference,C#,Variables,Object,Reference,在C#中,我正在制作一个平台游戏。地形是picturebox,对于碰撞系统,例如,我需要有一个名称来引用多个选定的picturebox,因为用另一个picturebox实现相同的功能需要太多的代码。 例如,如果“picturebox1”和“picturebox2”被引用为“pictureall”,那么,如果执行此代码: pictureall.Visible = false; “picturebox1”和“picturebox2”都是不可见的。那么,我如何引用(在本例中)具有一个名称的两个Pic

在C#中,我正在制作一个平台游戏。地形是picturebox,对于碰撞系统,例如,我需要有一个名称来引用多个选定的picturebox,因为用另一个picturebox实现相同的功能需要太多的代码。 例如,如果“picturebox1”和“picturebox2”被引用为“pictureall”,那么,如果执行此代码:

pictureall.Visible = false;
“picturebox1”和“picturebox2”都是不可见的。那么,我如何引用(在本例中)具有一个名称的两个PictureBox

编辑: 我主要在If语句中使用它。比如说: if(pictureall.Visible==true)MessageBox.Show(“true”); 如果任何picturebox可见,则为真


/Viktor

您可以创建一个名为Grouppictures的自定义类

  • 这将包含作为成员变量的图片列表
  • 方法SetVisibility(bool-visible)
  • 在上述方法中,您将循环并设置所有图片的可见性
  • 但是您将调用GrouppicturesObj.SetVisibity(false)方法
    如果您不想像kishore V M建议的那样使用自定义集合类,可以将图片框的选择放在集合中,例如
    列表
    ,并使用可用的(扩展)方法,例如

    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
    }
    
    List pictureBoxes=new List();
    //填写清单
    图片框。添加(…);
    //对列表中的所有框执行某些操作
    pictureBoxes.ForEach(box=>box.Visible=true);
    //询问一下列表中的方框
    if(pictureBoxes.Any(box=>box.Visible))
    {
    //至少有一个框可见
    }
    //或:
    if(pictureBoxes.All(box=>box.Visible))
    {
    //所有框均可见
    }
    
    参考资料:


    使用数组或其他集合,以便您可以根据自己的编辑快速循环所有PictureBoxe。。您仍然可以通过添加另一个方法来解决这个问题,该方法返回可见性状态(基本上是循环遍历它包含的图像,检查它们的可见性并返回状态)。在if条件下使用if(GroupPicturesObj.GetVisibility()==true)谢谢,你给了我一个想法。