/*********************************************************** *说明: 在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坐标 } } }