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 回答