2009-03-25 7 views
2

複数の(最大5つの)ピクチャボックスを重ねて表示するのは難しいですが、すべてを見ることができます。最初と最後だけが表示されます。私はそれらを下から上に表示し、それらの位置を正しく設定し、BringToFront()関数を使用します。誰かが解決策を持っていますか?手伝ってくれてありがとう!PictureBoxesとZorder [.NET]

答えて

2

実際の問題は何か分かりません。次のコードでは、フォームに5つのスタックされたPictureBoxが追加され、それらがすべて表示されるように構成されています。

private void AddStackedPictureBoxes() 
{ 
    for (int i = 0; i < 5; i++) 
    { 
     PictureBox pb = new PictureBox(); 

     pb.BackColor = Color.FromArgb(i * 50, i * 50, i * 50); 
     pb.BorderStyle = BorderStyle.FixedSingle; 

     pb.Location = new Point(i * 10, i * 10); 
     pb.Size = new Size((5 - i) * 20, (5 - i) * 20); 

     Controls.Add(pb); 

     pb.BringToFront(); 
    } 
} 

これはおそらく、問題が発生している理由についてのいくつかの洞察を与えるでしょう。

たとえば、コントロールがフォームに追加される前にBringToFront()を呼び出すと、効果はありません。

+0

BringToFront()を使用して*後に追加した問題は、今まで実現していなかった(VS FormのDesingerからの悪い習慣 - すべてのプロパティを設定してからパネル/フォームなどに追加) –

+0

また、ピクチャボックスが同じコントロールに追加されていることを確認する必要があります。私はメインフォームに追加されたピクチャボックスが、パネルに追加されたピクチャボックスの下には行かない理由を疑問に思っていました。うわー! – ashes999

0

それぞれ背景色を透明に設定してください。

ダニエル氏によると、BringToFront()はコントロールが既にフォーム上にある場合にのみ機能します。

+0

私はなぜそれを(透過色で)すべきか分かりません。私は透明な領域/領域が全くない絵を描きます。 –

+0

まあ、私はあなたがそれらを積み重ねる理由は、あなたが層的な効果を持つことができると仮定した。 –

関連する問題