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 に答える