WinForm 之 自定义标题栏的窗体移动

Posted Now,DayBreak

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WinForm 之 自定义标题栏的窗体移动相关的知识,希望对你有一定的参考价值。

  通过标题栏的鼠标事件实现窗体移动,代码如下:

        bool m_isMouseDown = false; //窗体是否移动
        Point m_mousePos; //记录窗体的位置
        /// <summary>
        /// 鼠标按下,开启移动
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void panelTitle_MouseDown(object sender, MouseEventArgs e)
        {
            m_mousePos = Cursor.Position;
            m_isMouseDown = true;
        }

        /// <summary>
        /// 窗体鼠标移动
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void panelTitle_MouseMove(object sender, MouseEventArgs e)
        {
            if (m_isMouseDown)
            {
                Point tempPos = Cursor.Position;
                this.Location = new Point(Location.X + (tempPos.X - m_mousePos.X), Location.Y + (tempPos.Y - m_mousePos.Y));
                m_mousePos = Cursor.Position;
            }
        }

        /// <summary>
        /// 鼠标抬起,关闭移动
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void panelTitle_MouseUp(object sender, MouseEventArgs e)
        {
            m_isMouseDown = false;
            this.Focus();
        }

 

以上是关于WinForm 之 自定义标题栏的窗体移动的主要内容,如果未能解决你的问题,请参考以下文章

(C#)Winform 关于隐藏标题栏后的问题

小5聊Winform窗体开发基础知识积累

C# 做的winform窗体程序把一个Form给为自定义控件?

C#WinForm无边框窗体移动----模仿鼠标单击标题栏移动窗体位置

winform窗体程序最大化时遮挡屏幕任务栏的设置

Winform中实现自定义屏保效果(附代码下载)