整个表单的Hittest透明度

时间:2012-06-16 14:35:30

标签: c# winforms hittest wndproc

在不调整表单可见性的情况下,表单的整个边界是否可以透明?

我正在使用对WindowFromPoint的user32 api调用,以便在鼠标下找到控件。在某些情况下,我想忽略浮在主表格(或其他子表格)前面的儿童表格的存在,但保持此表格忽略可见。

将表单的不透明度设置为忽略为0将成功使得hittest直接通过它,但表单显然是不可见的,我希望它保持可见。

由于这个子窗体可以有任意数量的控件,有没有办法让这个窗体拦截所有WM_NCHITTEST消息转到窗体上的子控件,这样我就能为每个控件返回hittest透明度?表单中包含的控件是任意的,因此我无法在内部对其进行修改。

1 个答案:

答案 0 :(得分:1)

您正在寻找WS_EX_TRANSPARENT Windows样式。

This answer给出了足够好的解释。