如何移动WinForm窗口没有边框,但面板覆盖整个区域

时间:2011-01-04 21:08:29

标签: c# winforms

我看到在这个论坛上发布的代码,用于移动没有边框的WinForm,但我的对话框(C#)有一个覆盖整个区域的面板。我知道我必须使用WndProc来做到这一点。我不知道该做什么。我的窗户不移动,除非我通过缩小面板的大小来暴露它的一部分。谢谢。

我的代码:

protected override void WndPro(ref Message m)
{
  switch(m.Msg)
  {
   case 0x84:m.Result = new intPtr(0x2);
   return 
   }
base.wndProc(ref m);
}

1 个答案:

答案 0 :(得分:2)

除了退回HTTRANSPARENT之外,您需要给面板提供相同的治疗。这使得命中测试变得透明,表单将获得消息。现在它有效。在项目中添加一个类并粘贴下面显示的代码。编译。用这个替换现有的面板。

using System;
using System.Windows.Forms;

class BackPanel : Panel {
    protected override void WndProc(ref Message m) {
        if (m.Msg == 0x84) m.Result = (IntPtr)(-1);
        else base.WndProc(ref m);
    }
}