C#Winform实现无边框窗体鼠标拖动

    在有时候我们为了实现软件的美观,我们需要把窗体的边框隐藏,但是问题也会随之而来,在属性中设置了FormBorderStyle应该为None,边框便可以隐藏,但是我们在使用软件时却无法拖动窗体,那么我们该如何解决这个问题呢。其实代码很简单,只要override  WndProc方法便可。在无边框窗体的代码中加入下面的protected override void WndProc(ref Message m)方法便可。
 
 
  具体代码如下:
 
 
 protected override void WndProc(ref Message m)
        {
            switch (m.Msg)
            {
                case 0x4e:
                case 0xd:
                case 0xe:
                case 0x14:
                    base.WndProc(ref m);
                    break;
                case 0x84://鼠标点任意位置后可以拖动窗体
                    this.DefWndProc(ref m);
                    if (m.Result.ToInt32() == 0x01)
                    {
                        m.Result = new IntPtr(0x02);
                    }
                    break;
                case 0xA3://禁止双击最大化
                    break;
                default:
                    base.WndProc(ref m);
                    break;
            }
        }
实现窗体无边框代码为:
 
 
  private void Form1_Load(object sender, EventArgs e)
        {
            this.FormBorderStyle = FormBorderStyle.None;//无边框
        }



 
 

猜你喜欢

转载自blog.csdn.net/sl1990129/article/details/79280970