单击透明的Visual C#窗口窗体?

时间:2020-03-06 14:30:58  来源:igfitidea点击:

我制作了一个面板并将其设置为填充屏幕,现在我可以看到其下方的窗口,但我希望单击它,这意味着他们可以单击文件或者通过透明度查看另一个对象的工具提示。

RE: This may be too obvious, but have you tried sending the panel to the back by right clicking and choosing "Send to Back"?

我的意思是像台式机或者Firefox,而不是我的项目中的任何东西。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

解决方案

创建透明的顶层表单非常容易。只需使其填充屏幕或者所需区域,然后将其定义为具有相同值的TransparenyKey颜色和BackColor即可。

让它忽略鼠标非常简单,我们只需要重写WndProc并告诉WM_HITTEST所有鼠标位置都将被视为透明。因此,导致鼠标与窗口下方发生的任何事情进行交互。像这样的东西

protected override void WndProc(ref Message m)
    {
        if (m.Msg == (int)WM_NCHITTEST)
            m.Result = (IntPtr)HTTRANSPARENT;
        else
            base.WndProc(ref m);
    }