在VC#2010中移动无标题栏的窗口

/***********************************************************
*说明: 在VC#2010中移动无标题栏的窗口
*备注:测试代码的程序的项目名为:MoveNoTitle
*原理:捕获鼠标事件,编写相应的代码
*做者:袁培荣 yuanpeirong@vip.qq.com
*修改时间:2011年09月25日
***********************************************************/

/***********************************************************
 首先,咱们打开VS2010,选择新建->项目,选择语言为Visual C#,
 开发模式为Windows,选择开发Windows窗体应用程序,
 设置项目名称为:MoveNoTitle,进入开发环境
 咱们先在窗体上加一个按钮,用来关闭窗体。
 C#的窗体只在标题栏中有关闭按钮,这里咱们的窗体是无标题栏的
 那么咱们就没有关闭按钮来关闭程序了,这样是危险的
 所以咱们要加个按钮来关闭窗体
 读者能够用别的方法来关闭窗体,只要有关闭窗体这个功能就行。
***********************************************************/

/***********************************************************
 而后,咱们为窗体添加四个事件,记住,必定要用向导添加,不然
 下面的代码不起做用,除非你在主函数上声明这些事件。
 事件分别为:button1_Click
             Form1_MouseMove
			 Form1_MouseUp
			 Form1_MouseLeave
			 Form1_MouseDown
***********************************************************/

//咱们在文件Form1.cs中加入以下代码便可
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace MoveNoTitle
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        bool beginMove = false;//初始化
        int currentXPosition;
        int currentYPosition;
        private void button1_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void Form1_MouseMove(object sender, MouseEventArgs e)
        {
            if (beginMove)
            {
                this.Left += MousePosition.X - currentXPosition;//根据鼠标x坐标肯定窗体的左边坐标x
                this.Top += MousePosition.Y - currentYPosition;//根据鼠标的y坐标窗体的顶部,即Y坐标
                currentXPosition = MousePosition.X;
                currentYPosition = MousePosition.Y;
            }
        }

        private void Form1_MouseUp(object sender, MouseEventArgs e)
        {
            beginMove = false;//中止移动
        }

        private void Form1_MouseLeave(object sender, EventArgs e)
        {
            currentXPosition = 0; //设置初始状态
            currentYPosition = 0;
            beginMove = false;
        }

        private void Form1_MouseDown(object sender, MouseEventArgs e)
        {
            beginMove = true;
            currentXPosition = MousePosition.X;//鼠标的x坐标为当前窗体左上角x坐标
            currentYPosition = MousePosition.Y;//鼠标的y坐标为当前窗体左上角y坐标

        }
    }
}
相关文章
相关标签/搜索