在C#表单中单击
我创建了一个半透明的表单。 我希望人们能够点击表单区域,并且表单不能处理点击。 我希望表单下面的任何内容都能接收点击事件。
您可以使用SetWindowLong
执行此操作:
int initialStyle = GetWindowLong(this.Handle, -20); SetWindowLong(this.Handle, -20, initialStyle | 0x80000 | 0x20);
这里有一些神奇的数字:
-
-20
– GWL_EXSTYLE检索扩展窗口样式。
-
0x80000
– WS_EX_LAYERED创建一个分层窗口 。
-
0x20
– WS_EX_TRANSPARENT指定在绘制窗口(由同一个线程创建)之后的兄弟节点之前,不应绘制使用此样式创建的窗口。 窗口显示为透明,因为底层兄弟窗口的位已经被绘制。
网上有很多关于如何做到这一点的文章,比如这篇文章 。