实现没有标题栏的窗体拖动,获取窗体位置、鼠标位置,判断是否鼠标是否按下,以及鼠标是否在窗体内部,即可实现。
public partial class Form1 : Form
{
Point mousePosition;
Point formPosition;
bool isMouseDown = false;//是否按下
bool isMouseIn = false;//是否在窗体内
public Form1()
{
InitializeComponent();
}
//鼠标按下
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
isMouseDown = true;
mousePosition = Control.MousePosition; //鼠标位置
formPosition = this.Location; //窗体左上角位置
}
private void Form1_MouseUp(object sender, MouseEventArgs e)
{
isMouseDown = false;
}
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
Point mousePoint = Control.MousePosition; //移动的位置
if (isMouseDown&&isMouseIn)
this.Location = new Point(mousePoint.X - mousePosition.X + formPosition.X, mousePoint.Y - mousePosition.Y + formPosition.Y);
}
private void Form1_MouseEnter(object sender, EventArgs e)
{
isMouseIn = true;
}
private void Form1_MouseLeave(object sender, EventArgs e)
{
isMouseIn = false;
}
}