14

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

RE:这可能太明显了,但是您是否尝试通过右键单击并选择“发送到后面”将面板发送到后面?

我的意思是桌面或 Firefox,而不是我项目中的东西。

4

1 回答 1

22

创建一个透明的顶级表单非常容易。只需让它填满屏幕或所需区域,并将其定义为具有相同值的 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);
    }
于 2008-09-21T23:54:24.047 回答