韩言福地

只有想不到的,没有办不到的。 - HY Auspicious Place

« 如何制做不规则窗体如何读取.resx 中的内容 »

拖动窗体实现

设置窗体的移动操作,我们要用到两个全局的变量

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;

}

}

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

日历

最新评论及回复

最近发表

Copyright 2007-2010 www.yinrg.com(HY Auspicious Place) . 湘ICP备06007796号.