Winform 无边框窗体的鼠标拖动操作

1.前言

    使用c# winform开发上位机时,有时候会将窗口的样式设置为none,从而达到扁平化的效果,如下图所示


2.问题

    试过这种方式会发现,最大化,最小化操作很好实现,只需触发按钮事件改变窗口的WindowsState属性就可以实现。但是没有系统窗口的点击拖动操作。

3.解决方案

     1.    在窗口代码中加入一段代码

#region 窗体移动

        Point mouseOff;//鼠标移动位置变量

        bool leftFlag;//标签是否为左键

        private void Frm_MouseDown(object sender, MouseEventArgs e)

        {

            if (e.Button == MouseButtons.Left)

            {

                mouseOff = new Point(-e.X, -e.Y);

                leftFlag = true;

            }

        }

        private void Frm_MouseMove(object sender, MouseEventArgs e)

        {

            if (leftFlag)

            {

                Point mouseSet = Control.MousePosition;

                mouseSet.Offset(mouseOff.X, mouseOff.Y);//设置移动后的位置

                Location = mouseSet;

            }

        }

        private void Frm_MouseUp(object sender, MouseEventArgs e)

        {

            if (leftFlag)

            {

                leftFlag = false;//释放鼠标后标注为False

            }

        }

        #endregion

2.绑定鼠标事件

    在UI设计窗口,选中鼠标拖动的点击范围,在鼠标事件中绑定如下方法即可


3.启动项目,发现窗口可以正常拖动。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容