自定义控件的拖动
来源:互联网 发布:数据库与事务处理 编辑:程序博客网 时间:2024/05/17 00:14
//添加事件
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;
}
}
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拖动控件的实现,自定义可拖动的LinearLayout
- Silverlight制作可拖动的自定义控件
- winform 可拖动的自定义Label控件
- 自定义VIEW,可拖动的控件
- C# 控件的自定义拖动、改变大小方法
- 【iOS】自定义控件入门:可拖动的环形进度
- android开发自定义View,可以自由拖动的控件
- 可拖动的控件
- 自由拖动的控件
- 可拖动的控件
- 控件的拖动
- Android控件的拖动
- Android 控件的拖动
- Android 自定义可拖动尺子控件
- Android自定义控件之拖动条
- 中国人都在上的四种当! - Zt
- 一位软件工程师的软件过程总结
- 请教高手,protel 99 se 里面怎么进行单面板布线啊,默认最小是二层啊?
- 递归转非递归(学习笔记)
- JAVA专业术语集(新手必看)
- 自定义控件的拖动
- 几个国外域名解析网站
- 装上了MSDN了
- 中国代码恒熠百度小偷V1.0之网页搜索(修正版)
- Ajax让网络更顺滑
- 实现自动判断图片或flash,并在网页中显示
- 动漫术语解释
- 新建ASP.NET项目时出现错误的解决方法(尝试创建WEB项目...)
- 使用ClientDataSet 时必须记住的几点