VS 窗体边框太丑,常常开发时取消边框,但无边框的窗体无法自由拖动,本文介绍如何点击任意位置拖动窗体。
1.定义变量
bool IsDragging = false; //当前拖拽状态
Point p = new Point(0, 0); //记录鼠标按下去的坐标
Point offset = new Point(0, 0); //记录动了多少距离
2.鼠标按下、释放和移动事件
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button != MouseButtons.Left)
return;//当前为拖曳状态
IsDragging = true;
p.X = e.X; //记录坐标X,Y
p.Y = e.Y;
}
private void Form1_MouseUp(object sender, MouseEventArgs e)
{//当前为不拖曳状态
IsDragging = false;
}
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
if (IsDragging)
{
//距离计算:移动的坐标-鼠标按下记录的坐标
offset.X = e.X - p.X;
offset.Y = e.Y - p.Y;
//控件位置
Location = PointToScreen(offset);
}
}
3.无边框窗体双击放大
我的做法是添加一个panel赋予双击事件,
private void panel_DoubleClick(object sender, EventArgs e)
{
if (this.WindowState == FormWindowState.Maximized)
{
this.WindowState = FormWindowState.Normal;
}
else
{
this.WindowState = FormWindowState.Maximized;
}
}