0
public class TransparentPanel : Panel
{
    protected override CreateParams CreateParams
    {
        get
        {
            CreateParams cp = base.CreateParams;
            cp.ExStyle |= 0x00000020; // WS_EX_TRANSPARENT
            return cp;
        }
    }
    protected override void OnPaintBackground(PaintEventArgs e)
    {
        //base.OnPaintBackground(e);
        //e.Graphics.FillRectangle(new SolidBrush(Color.FromArgb(200, 0, 0, 0)), this.Bounds);

        Color bk = Color.FromArgb(200, this.BackColor);
        e.Graphics.FillRectangle(new SolidBrush(bk), e.ClipRectangle);
    }
}

このパネルをフォームに適用しました。フォームの下に他のコントロールがあります。パネルがform.controlsに配置され、他のカスタムコントロールが別のパネルに配置され、それがform.controlsに配置されていても、一部はこの新しいパネルをオーバードローしているようです。上に描画できるようにするために、カスタム コントロールで何か特別なことをする必要がありますか?

4

1 に答える 1

0

パネルまたはパネル上にあるコントロールで.BringToFront()メソッドを試してください。.SendToBack()

MSDN ドキュメントを参照してください。

通常、新しいコントロールを追加すると、その親の他のすべてのコントロールの前に追加されます。

于 2013-08-29T08:06:55.780 に答える