将picturebox带到前面

时间:2012-08-16 06:03:26

标签: c#

当我在一个有一些重叠的循环中绘制几个图像时,就像一副扑克牌一样,我希望最后一张牌位于顶部,以查看整张牌。现在它是第一张可见的卡片。我想知道是否有办法将第一张卡片放在前面或等同于什么?

        for (int i = 1; i < 10; i++)
        {
            cardGui = new CardGui(i);
            cardGui.Location = new Point(10 + (i * 10), 10);
            panel1.Controls.Add(cardGui);   
        }

3 个答案:

答案 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();