C# 不同面板上的面板透明度

C# 不同面板上的面板透明度,c#,.net,visual-studio,c#-4.0,C#,.net,Visual Studio,C# 4.0,我正在开发一个c应用程序,将用于触摸电脑。它有一个秘密组合,以防出现问题时关闭它。右上,左上,右上 为了实现这一点,我创建了一个类,在表单中添加了两个面板: public enum Location { Top, Bottom }; public SecretCode(Form form, int boxSize, int resetTimer, Location location, bool debug) {

我正在开发一个c应用程序,将用于触摸电脑。它有一个秘密组合,以防出现问题时关闭它。右上,左上,右上

为了实现这一点,我创建了一个类,在表单中添加了两个面板:

    public enum Location
    {
        Top,
        Bottom
    };
        public SecretCode(Form form, int boxSize, int resetTimer, Location location, bool debug)
    {
        timerReset.Interval = resetTimer;
        timerReset.Tick += TimerReset_Tick;

        Panel panelRight = new Panel();

        if (debug) panelRight.BackColor = Color.Yellow;
        panelRight.Size = new Size(boxSize, boxSize);
        panelRight.Location = new Point(form.Width - boxSize, location == Location.Top ? 0 : form.Height - boxSize);
        panelRight.Click += PanelTopRight_Click;

        Panel panelLeft = new Panel();

        if (debug) panelLeft.BackColor = Color.Red;
        panelLeft.Size = new Size(boxSize, boxSize);
        panelLeft.Location = new Point(0, location == Location.Top ? 0 : form.Height - boxSize);
        panelLeft.Click += PanelTopLeft_Click;

        form.Controls.Add(panelRight);
        form.Controls.Add(panelLeft);

        panelLeft.BringToFront();
        panelRight.BringToFront();
    }
在我的主窗体上,我有不同的面板,它们都是全屏显示/隐藏的。每个面板都有自己的背景图像

小组介绍 小组报名 当用户读完介绍后,整个面板消失,注册面板上出现一个图标


是否有任何简单的方法可以确保SecretCode面板始终是透明的,或者每次显示新面板时我是否需要更改其父级?

好吧,更改父级没有意义,这就是表单。您只需确保Z顺序正确,以便机密始终在任何其他控件前面。而且它们不会重叠任何东西。也许会有更多的BringToFront电话。秘密面板已经在所有东西的顶部,但问题是所有面板都有不同的背景图像。所以面板现在不是很透明。它们都使用灰色。然后将其BackColor属性设置为Color.Transparent。这很昂贵,确保背景图像与ClientSize完全匹配,并且具有32bppPArgb像素格式很重要。这不起作用。仍然显示为灰色。从我阅读的其他几个主题来看,这个问题是因为透明控件在背景中绘制其父控件,在本例中,由于窗体是父控件,因此我得到了灰色背景。我可能错了。是的,假设你在谈论表单的背景图像。因此,不要让表单成为父表单,而是让您重叠的表单成为父表单。