1

当我在一个循环中绘制几个重叠的图像时,比如一副扑克牌,我希望最后一张牌在上面,以查看整张牌。现在它是第一张可见的卡片。我想知道是否有办法将第一张卡放在前面或其他类似的东西?

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

3 回答 3

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

我希望最后一张牌在上面

这段代码给出了你所问的

于 2012-08-16T06:07:06.923 回答
1

父集合的尝试BringToFront()方法或使用方法。SetChildIndexControls

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); 
}
于 2012-08-16T06:11:22.070 回答
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();
于 2012-08-16T06:15:23.253 回答