在我的c#winform项目中,我将一个面板放在一个表单中。面板的BackColor与表单的TransparencyKey相同,因此它看起来很透明'。
我希望在点击/拖动“透明”内容时移动表单。面板。所以我覆盖了面板的WndProc,如下所示:
public class UnclickablePanel : Panel {
protected override void WndProc(ref Message m) {
if (m.Msg == 0x84) { // WM_NCHITTEST
m.Result = new IntPtr(-1);
return;
}
base.WndProc(ref m);
}
}
在我看来,面板返回" -1"(透明)然后表单可以处理鼠标按下/向上/移动事件。
在Win7中使用Aero主题可以正常工作。但是如果win xp或win7 +基本主题,面板根本无法接收WM_NCHITTEST。只需点击表单即可。
任何解决方案或解决方法?