【问题标题】:Reference to multiple objects/variables with 1 name引用具有 1 个名称的多个对象/变量
【发布时间】:2014-08-30 17:54:22
【问题描述】:

在 C# 中,我正在制作一个平台游戏。地形是图片框,并带有碰撞系统,例如。我需要有 1 个名称来引用许多选定的图片框,因为使用另一个图片框制作相同的功能会需要太多代码。 举个例子,如果“picturebox1”和“picturebox2”被引用为“pictureall”,那么,如果执行这段代码:

pictureall.Visible = false;

“picturebox1”和“picturebox2”都将不可见。那么,如何引用(在示例中)具有 1 个名称的 2 个图片框?

编辑: 我主要会在 If 语句中使用它。因此,例如: if (pictureall.Visible == true) MessageBox.Show("true"); 如果那时任何图片框可见,那就是真的。

/维克托

【问题讨论】:

  • 使用数组或其他集合,以便快速循环所有图片框

标签: c# variables object reference


【解决方案1】:

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

  1. 这将包含图片列表作为成员变量
  2. 一种方法 SetVisibility(bool visible)
  3. 在上述方法中,您将循环并设置所有图片的可见性
  4. 但您将该方法称为 GrouppicturesObj.SetVisibity(false);

【讨论】:

  • 根据您的编辑..您仍然可以通过添加一个返回可见性状态的方法来解决这个问题(基本上循环通过它包含的图像并检查它们的可见性并返回状态)。你在这样的条件下使用 if(GroupPicturesObj.GetVisibility() == true)
  • 谢谢,你给了我一个想法。
【解决方案2】:

如果您不想像 kishore VM 建议的那样使用自定义集合类,您可以将图片框的选择放在一个集合中,例如 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
}

参考资料:

【讨论】:

    猜你喜欢
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 2018-01-21
    • 2012-05-07
    相关资源
    最近更新 更多