我有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/