在开发中,有一些常常用到的方法,每次查找以前写的比较麻烦 ,自己写有在做重复工作 ,所以总一个小的工具类,随时添加内容
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 窗体中调用。