将“父”属性分配给更改的对象(存储在控件数组中的名称)

时间:2014-01-10 16:01:53

标签: c# arrays controls parent

我有6张需要使用透明度的图片。它们可以打开和关闭。我需要设置它,以便如果一张图片(它是父母)被关闭,那么上面的图片将被分配给下一个可用的父母。

为此,我将“下一个可用父级”图像名称存储在控件数组中,并将“前子级”图像的父级设置为此控件数组

(有两个控制数组,因为父项和子项都可以根据按下的按钮而改变)

这是我想要工作的代码行〜:

updatedParentFaction[0].parent = parentFaction[0];

如果我的父母被改变的孩子每次我写的都没有什么不同

imageB.parent = parentFaction[0];   //for example

有没有办法让它接受存储在'updatedParentFaction'数组中的什么作为我想要更改的孩子的名字?

更新

好的,我将在此提供更多信息:

有六个图片框称为“图像A”,“图像B”等,一直到'图像F'。

它们的大小和位置相同(一个在另一个上面 - 使用透明度将它们叠加在一起)。

当程序运行时,它们都是“隐藏”,按下相应的按钮就可以看到它们(如果按“显示图像A”,则图像A可见 - 按下按钮再次显示图像隐藏)

父图像将始终是第一个打开的字母图像,此后的每个图像都将成为该父图像的后续子图像,但按顺序排列。

例如: 如果图像A +图像B +图像D是可见的并且C,则隐藏E + F.然后主要的父图像将是A(图像B将是A的子图像,图像D将是图像B的子图像)

首次使用此方法运行程序并打开图像时,透明度工作正常。 但是,(使用上面的例子)如果我要隐藏图像B,那么图像D也会被隐藏。

我正在尝试编写代码,以便在关闭父图像时,子项将其父项更改为下一个可用的父项;在上面的示例中,如果关闭图像B,则图像D会将其父级更改为图像A.

使用代码行:

updatedParentFaction[0].parent = parentFaction[0];

需要其父改变的'Child'图像的名称存储在'updatedParentFaction [0]'中,我需要分配的父派系存储在'parentFaction [0]'

因此,使用上面的示例,图像A,B + D打开。图像B =图像A的子图像,图像D =图像B的子图像。

然后关闭图像B,图像D现在需要是图像A的孩子。

我尝试使用我刚才解释过的代码,但代码为'将此数组的父代设置为parentFaction [0]'

我需要代码来读取'将控件与存储在updatedParentFaction [0]中的名称设置为存储在parentFaction [0]

中的名称的子代

希望这有帮助,如果没有生病显示我的代码,但我想解释它可能会更容易。

1 个答案:

答案 0 :(得分:0)

提供PictureBox数组图片,您可以使用这些功能来更改可见性。

这个将为具有给定索引及其所有子项的项目设置可见性:

void SetVisible(PictureBox[] pictures, int index, bool visible) {
    for (int i=index; i < pictures.Length; ++i)
        pictures[i].Visible = visible;
}

与上述相同,但使用对象引用而不是索引:

void SetVisible(PictureBox[] pictures, PictureBox item, bool visible) {
    SetVisible(pictures, Array.IndexOf(item), visible);
}

要查找具有给定索引的项目的第一个可见祖先:

int FindFirstVisibleAncestorIndex(PictureBox[] pictures, int index) {
    for (int i=index; i >= 0; i--) {
        if (pictures[i].Visible)
            return i;
    }

    return -1;
}

其他重载非常简单。