自定义控件的拖动

原创 2006年05月28日 17:22: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;
}



 


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

谁说ios不可以自定义控件?(可用xib拖动的)

一个月前,作者接到任务要封装自定义可拖动的控件,当时花了1秒的时间浏览大脑做过的所有程序(包括网络上的Demo)没有发现有此类控件的封装啊?在Xcode的控件表里,确实有一个是“Custom Obje...

自定义View控件画圆,拖动圆

自定义View控件

Silverlight制作可拖动的自定义控件

转载自http://www.cnblogs.com/chengxingliang/archive/2011/02/17/1956856.html 在Silverlight中MouseDragElem...
  • srzhz
  • srzhz
  • 2011-11-26 20:39
  • 2269
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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