2010-05-09 64 views
5

我创建了一个半透明表单。我希望人们能够点击表单区域,并且表单不能处理点击。我希望表单底下的任何内容都可以接收点击事件。C#表单点击通过表格

+0

[点击透明的Visual C#窗体?](http://stackoverflow.com/questions/112224/click-through-transparency-for-visual-c-window-forms) – Joey 2010-05-09 16:09:52

+0

什么将下面表格? – Ikaso 2010-05-09 16:10:39

回答

3

你可以用SetWindowLong做到这一点:

int initialStyle = GetWindowLong(this.Handle, -20); 
SetWindowLong(this.Handle, -20, initialStyle | 0x80000 | 0x20); 

在这里有几个幻数:

  • -20 - GWL_EXSTYLE

    检索扩展的窗口样式。

  • 0x80000 - WS_EX_LAYERED

    创建layered window

  • 0x20 - WS_EX_TRANSPARENT

    指定这种风格创建的窗口不宜涂,直到窗下的兄弟姐妹(即由同一线程创建的)都被涂。该窗口显示为透明,因为底层兄弟窗口的位已经被绘制。

有许多文章各地如何做到这一点的网站,如this one