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

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

(有两个控件数组,因为父控件和子控件都可以根据所按下的按钮进行更改)

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

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


如果父母的孩子每次更换都不一样,我只会写

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


有没有办法让它接受存储在“ updatedParentFaction”数组中的内容作为我希望更改的孩子的名字?

更新

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

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

它们的大小和位置都相同(一个在另一个上方-使用透明性将它们显示在另一个上方)。

程序运行时,它们全部处于“隐藏”状态,通过按相应的按钮,它们可以显示为可见状态(如果您按“ show imageA”,则图像A是可见的-再次按下该按钮将使图像隐藏)

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

例:
如果图像A +图像B +图像D可见,而C,E + F隐藏。然后,主父图像将是A(图像B将是A的子代,图像D将是B的子代)

首次运行该程序并打开图像时,使用此方法可以打开透明胶片。
但是,(使用上面的示例)如果我要隐藏图像B,则图像D也将被隐藏。

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

使用代码行:

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


需要更改其父级的“子级”图像的名称存储在“ updatedParentFaction [0]”中,需要分配的父级存储在“ parentFaction [0]”中

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

然后关闭图像B,现在图像D必须是图像A的子级。

我尝试使用我刚刚解释的那段代码,但是代码显示为“将此数组的父级设置为parentFaction [0]”

我需要代码读取“将控件设置为具有存储在updatedParentFaction [0]中的名称,作为存储在parentFaction [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;
}


其他重载非常简单。

关于c# - 将'parent'属性分配给变化的对象(名称存储在控制数组中),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21048840/

10-11 18:01