C#无边框控制窗体移动
程序员文章站
2022-07-14 12:17:52
...
虽然C#自带有边框,但是在开发过程中那个边框并不是很好看,当我们不使用那个边框的时候,那么就会面临一个问题,没有C#自带的边框了,那么窗体怎么进行移动呢?
这涉及到C#的三个事件:
1.MouseDown : 鼠标单击事件
2.MouseMove : 鼠标经过事件
3.MouseUp : 鼠标抬起事件
在写的时候依然是这三个顺序:
首先设置两个全局变量:
Point mouseOff;//用于获取鼠标位置
bool leftFlag;//移动标识
然后写第一个事件:
private void MainForm_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)//判断是否单击的是左键
{
mouseOff = new Point(e.X,e.Y);//获取当前鼠标位置
leftFlag = true;//用于标记窗体是否能移动(此时鼠标按下如果说用户拖动鼠标则窗体移动)
}
}
第二个事件:
private void MainForm_MouseMove(object sender, MouseEventArgs e)
{
if (leftFlag)
{
//用当前鼠标的位置 - 之前获取的鼠标位置 = 用户移动窗体的距离
//Location: 设置或获取窗体左上角位置
Location = new Point(Control.MousePosition.X - mouseOff.X, Control.MousePosition.Y - mouseOff.Y);
}
}
第三个事件:(此时移动已经完成 但是如果不把leftFlag标识一下,则会继续移动)
private void MainForm_MouseUp(object sender, MouseEventArgs e)
{
if (leftFlag)
{
leftFlag = false; //释放鼠标标识为false 表示窗体不可移动
}
}
通过以上代码可以完成 无边框窗体移动!
新手上路 多多指教!
下一篇: Netty