在开发中,有一些常常用到的方法,每次查找以前写的比较麻烦 ,自己写有在做重复工作 ,所以总一个小的工具类,随时添加内容
1.不规则窗体移动 静态类FormTools( public static class FormTools)
方法1:在窗体上按下鼠标并拖动
/// <summary>
/// 不规则窗体移动
/// </summary>
/// <param name="form">要移动的窗体对象</param>
public static void MoveForm(this Form form)
{
var moveOffset = new Point();
form.MouseMove += (sender, e) =>
{
if (e.Button != MouseButtons.Left) return;
var mousePos = Control.MousePosition;
mousePos.Offset(moveOffset.X, moveOffset.Y);
form.Location = mousePos;
};
form.MouseDown += (sender, e) => { moveOffset = new Point(-e.X, -e.Y); };
}
方法2:在窗体的控件上按下鼠标并拖动窗体
/// <summary>
/// 不规则窗体移动
/// </summary>
/// <param name="control">触发控件</param>
/// <param name="form">要移动的窗体对象</param>
public static void MoveForm(this Form form,Control control)
{
var moveOffset = new Point();
control.MouseMove += (sender, e) =>
{
if (e.Button != MouseButtons.Left) return;
var mousePos = Control.MousePosition;
mousePos.Offset(moveOffset.X, moveOffset.Y);
form.Location = mousePos;
};
control.MouseDown += (sender, e) => { moveOffset = new Point(-e.X, -e.Y); };
}
调用
方法1调用:
this.MoveForm();
方法2调用:
this.MoveForm(panel2);
注意:this 是当前窗体对象,也就是说这两个方法要在 winform 窗体中调用。