1.前言
使用c# winform开发上位机时,有时候会将窗口的样式设置为none,从而达到扁平化的效果,如下图所示
2.问题
试过这种方式会发现,最大化,最小化操作很好实现,只需触发按钮事件改变窗口的WindowsState属性就可以实现。但是没有系统窗口的点击拖动操作。
3.解决方案
1. 在窗口代码中加入一段代码
#region 窗体移动
Point mouseOff;//鼠标移动位置变量
bool leftFlag;//标签是否为左键
private void Frm_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
mouseOff = new Point(-e.X, -e.Y);
leftFlag = true;
}
}
private void Frm_MouseMove(object sender, MouseEventArgs e)
{
if (leftFlag)
{
Point mouseSet = Control.MousePosition;
mouseSet.Offset(mouseOff.X, mouseOff.Y);//设置移动后的位置
Location = mouseSet;
}
}
private void Frm_MouseUp(object sender, MouseEventArgs e)
{
if (leftFlag)
{
leftFlag = false;//释放鼠标后标注为False
}
}
#endregion
2.绑定鼠标事件
在UI设计窗口,选中鼠标拖动的点击范围,在鼠标事件中绑定如下方法即可