在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

    指定在绘制窗口(由同一个线程创建)之后的兄弟节点之前,不应绘制使用此样式创建的窗口。 窗口显示为透明,因为底层兄弟窗口的位已经被绘制。

网上有很多关于如何做到这一点的文章,比如这篇文章 。