C#移动无标题窗体

在窗体的类中声明两个变量
private Point mouseOffset; // 记录鼠标指针的坐标
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;
   }
}

原文链接:http://www.cnblogs.com/XingfuStar/archive/2006/02/15/331242.html

你可能感兴趣的:(C#,移动窗体)