C#移动无标题窗体

来源:互联网 发布:什么是通用域名 编辑:程序博客网 时间:2024/05/18 13:26

在窗体的类中声明两个变量
C移动无标题窗体 - because - 總有⒈兲╱钞票上會印着労z的﹌ 微笑private Point mouseOffset; //记录鼠标指针的坐标
C移动无标题窗体 - because - 總有⒈兲╱钞票上會印着労z的﹌ 微笑private bool isMouseDown = false; //记录鼠标按键是否按下


创建该窗体 MouseDown事件的相应处理程序,注示部分为坐标的补偿
private void Form1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
    int xOffset;
    int yOffset;
    if (e.Button == MouseButtons.Left) 
    {
        xOffset = -e.X /*- SystemInformation.FrameBorderSize.Width*/;
        yOffset = -e.Y /*- SystemInformation.CaptionHeight - SystemInformation.FrameBorderSize.Height*/;
        mouseOffset = new Point(xOffset, yOffset);
        isMouseDown = true;
    }
}


创建该窗体的 MouseMove事件的相应处理程序
private void Form1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
{
    if (isMouseDown) 
    {
        Point mousePos = Control.MousePosition;
        mousePos.Offset(mouseOffset.X, mouseOffset.Y);
        Location = mousePos;
    }
}


创建该窗体的MouseUp事件的相应处理程序
private void Form1_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
{
    // 修改鼠标状态isMouseDown的值
    // 确保只有鼠标左键按下并移动时,才移动窗体
    if (e.Button == MouseButtons.Left) 
    {
        isMouseDown = false;
    }
}