自定义控件的拖动

转载 2006年06月07日 01:19:00

//添加事件
this.MouseUp += new System.Windows.Forms.MouseEventHandler(this.DragEnd);
this.MouseMove += new System.Windows.Forms.MouseEventHandler(this.DragMove);
this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.DragBegin);

private Point p1;//拖动前鼠标的屏幕坐标
private Point p2;//拖动后鼠标的屏幕坐标
private bool _isDrag;//是否正在被拖动
private bool _allowDragMove;
/// <summary>
/// 是否允许被拖动。
/// </summary>
public bool AllowDragMove
{
get
{
return this._allowDragMove;
}
set
{
this._allowDragMove = value;
}
}

private void DragBegin(object sender, System.Windows.Forms.MouseEventArgs e)
{
if(e.Button == MouseButtons.Left & this.AllowDragMove)
{
this._isDrag = true;

//记录下拖动前的坐标
this.p1 = this.PointToScreen(new Point(e.X, e.Y));
}
}

private void DragEnd(object sender, System.Windows.Forms.MouseEventArgs e)
{
if(e.Button == MouseButtons.Left & this._isDrag)
{
this._isDrag = false;

//记录下拖动后的坐标
this.p2 = this.PointToScreen(new Point(e.X, e.Y));
//计算位移
int x = p2.X - p1.X;
int y = p2.Y - p1.Y;

//移动控件位置
this.Left += x;
this.Top += y;
}
}

private void DragMove(object sender, System.Windows.Forms.MouseEventArgs e)
{
if(this._isDrag)
{
//记录下拖动后的坐标
this.p2 = this.PointToScreen(new Point(e.X, e.Y));
//计算位移
int x = p2.X - p1.X;
int y = p2.Y - p1.Y;

//移动控件位置
this.Left += x;
this.Top += y;

//把拖动后的顶点作为新的拖动前顶点
p1 = p2;
}



 


 

Android 自定义控件的 拖拽、移动 实现 方法

整个屏幕是一个继承自View或SurfaceView的类。它通过onDraw方法来画上面的所有的要显示的对象。一般在这个方法中,会有一些标示显示对象的位置、大小、图形、图片等一切和显示有关的属性,在o...
  • liyongjin2009
  • liyongjin2009
  • 2011年04月17日 14:18
  • 4369

自定义WinForm控件无法拖动到窗口

自己写的一个控件复制到一个类库后,发现在工具箱中无法拖到窗口,之前自已写Demo是可以的。 折腾了下发现之前控件的是私有的,只能在本程序集中访问。 class MyControl : Control ...
  • Electron_Boy
  • Electron_Boy
  • 2017年08月26日 23:45
  • 207

【自定义控件】让你的控件也具有拖拽(drag-and-drop)功能 详细版

转自:  现在有很多软件都支持拖拽功能,就是用鼠标拖着文件放到软件窗口中某个位置,软件就可以做出相应的反应。比如,Windows自带的播放软件Windows Media Player,你可以拖着...
  • vsooda
  • vsooda
  • 2013年05月08日 20:41
  • 2917

winform 可拖动的自定义Label控件

效果预览: 可拖动的自定义Label控件" title="winform 可拖动的自定义Label控件" style="margin:0px; padding:0px; border:0px;...
  • a1061747415
  • a1061747415
  • 2015年08月14日 08:35
  • 2699

百度地图自定义控件

自定义百度地图上面的控件。
  • beiweideqidaozhe
  • beiweideqidaozhe
  • 2016年05月19日 21:02
  • 397

Android实现View的任意拖动

安卓实现View的拖曳有几种方法,都不外乎改变View的坐标,并且重绘,于是,只要能够改变之就可以。 可以自定义View,重写OnTouchEvent(MotionEvent event),可以在...
  • Mingyueyixi
  • Mingyueyixi
  • 2017年04月20日 19:14
  • 1338

自定义控件的拖动

自定义控件的拖动    //添加事件   this.MouseUp += new System.Windows.Forms.MouseEventHandler(this.DragEnd);   thi...
  • SmartJavaer
  • SmartJavaer
  • 2006年10月12日 09:27
  • 873

如何禁止调整自定义控件的尺寸?

  有时我们在自定义控件时,出于某种原因的考虑(比如:防止在设计时误操作),想禁止调整自定义控件的尺寸(Height 或 Width)。最初我是这样实现的,这也是较简单的方法:public class...
  • doubon
  • doubon
  • 2005年01月18日 17:57
  • 4606

Android自定义控件-AddView

package view;import android.annotation.SuppressLint; import android.content.Context; import androi...
  • GS13070537189
  • GS13070537189
  • 2016年03月18日 08:03
  • 697

自定义控件的拖动

//添加事件 this.MouseUp += new System.Windows.Forms.MouseEventHandler(this.DragEnd); this.MouseMove += n...
  • newgrammer
  • newgrammer
  • 2006年05月28日 17:22
  • 994
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:自定义控件的拖动
举报原因:
原因补充:

(最多只允许输入30个字)