winform控件拖动

示例代码

 

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
public static class ControlDrag
{
    static Dictionary<string, Point> _locationList = new Dictionary<string, Point>();
    static Dictionary<string, bool> _isDownList = new Dictionary<string, bool>();
//扩展函数
public static void AddDrag(this Control control) { if (_locationList.ContainsKey(control.Name)==false) { _locationList.Add(control.Name, new Point() ); _isDownList.Add(control.Name, false);         
        
//按下鼠标 control.MouseDown
+= (s, ev) => { _isDownList[control.Name] = true; _locationList[control.Name] = new Point(ev.X, ev.Y); }; //松开鼠标 control.MouseUp += (s, ev) => { _isDownList[control.Name] = false; }; //鼠标移动 control.MouseMove += (s, ev) => { if (_isDownList[control.Name]) { int left = control.Left + ev.X - _locationList[control.Name].X; int top = control.Top + ev.Y - _locationList[control.Name].Y; control.Location = new Point(left, top); } }; } } }

调用方式

private void Form1_Load(object sender, EventArgs e)
{

//可以是任何控件
panel1.AddDrag();
//可以是任何控件
label1.AddDrag();

}

 

/*

文字少不能投放 文字少不能投放 文字少不能投放 文字少不能投放 文字少不能投放 文字少不能投放 文字少不能投放 文字少不能投放 文字少不能投放 文字少不能投放 文字少不能投放 文字少不能投放 文字少不能投放 文字少不能投放 文字少不能投放 文字少不能投放 文字少不能投放

*/

 

posted @ 2021-12-06 17:33  212的s  阅读(448)  评论(0编辑  收藏  举报