使Winfor窗体可以不通过自带标题栏实现移动

    有时候我们需要通过点击窗体的空白处,拖动实现窗体的移动。参考代码如下:

public partial class Form1 : Form
    {
        private const int WM_NCHITTEST = 0x84;
        private const int HTCLIENT = 0x1;
        private const int HTCAPTION = 0x2;

        public Form1()
        {
            InitializeComponent();
        }

        protected override void WndProc(ref Message m)
        { 
            switch (m.Msg)
            {
                case WM_NCHITTEST:
                    base.WndProc(ref m);
                    if ((int)m.Result == HTCLIENT)
                        m.Result = (IntPtr)HTCAPTION;
                    return;
            }
            base.WndProc(ref m);
        }

    }

如果点击的地方有控件存在,则没有效果

你可能感兴趣的:(使Winfor窗体可以不通过自带标题栏实现移动)