当我在一个有一些重叠的循环中绘制几个图像时,就像一副扑克牌一样,我希望最后一张牌位于顶部,以查看整张牌。现在它是第一张可见的卡片。我想知道是否有办法将第一张卡片放在前面或等同于什么?
for (int i = 1; i < 10; i++)
{
cardGui = new CardGui(i);
cardGui.Location = new Point(10 + (i * 10), 10);
panel1.Controls.Add(cardGui);
}
答案 0 :(得分:2)
循环后尝试使用此代码:
for (int i = 1; i < 10; i++)
{
cardGui = new CardGui(i);
cardGui.Location = new Point(10 + (i * 10), 10);
panel1.Controls.Add(cardGui);
}
cardGui.BringToFront();
我希望最后一张牌位于最前面
此代码完全按照您的要求提供
答案 1 :(得分:1)
尝试BringToFront()
方法或使用父Controls
集合的SetChildIndex
方法。
SetChildIndex
:将集合中指定子控件的索引设置为指定的索引。
BringToFront
:将控件置于z顺序的前面。
示例代码:
for (int i = 1; i < 10; i++)
{
cardGui = new CardGui(i);
cardGui.Location = new Point(10 + (i * 10), 10);
panel1.Controls.Add(cardGui);
panel1.Controls.SetChildIndex(cardGui, 10 - i);
}
答案 2 :(得分:1)
如果您想将第一张卡片放在前面,您应该为卡片设置2个值,例如cardGui1和cardGui2。第一个只是作为完成循环的其他人的前沿。
试试这个:
const j =1;
cardGui2 = new cardGui2(j);
cardGui12.Location = new Point(10 + (j * 10), 10);
panel1.Controls.Add(cardGui2);
cardGui2.BringToFront();
for (int i = 1; i < 10; i++)
{
cardGui1 = new CardGui1(i);
cardGui1.Location = new Point(10 + (i * 10), 10);
panel1.Controls.Add(cardGui1);
}
更新:
我假设最后一张卡片索引是10.试试这个:
for (int i = 1; i < 10; i++)
{
cardGui1 = new CardGui1(i);
cardGui1.Location = new Point(10 + (i * 10), 10);
panel1.Controls.Add(cardGui1);
}
const j =10;
cardGui2 = new cardGui2(j);
cardGui12.Location = new Point(10 + (j * 10), 10);
panel1.Controls.Add(cardGui2);
cardGui2.BringToFront();