c# winform实现拖拽控
来源:互联网 发布:百度seo技术 编辑:程序博客网 时间:2024/06/05 00:39
在.net中实现拖拽控件主要用到以下事件
MouseDown(object sender, MouseEventArgs e)
MouseUp(object sender, MouseEventArgs e)
MouseMove(object sender, MouseEventArgs e)
这三个函数的作用分别是鼠标按下时激活,鼠标松开激活和鼠标移动
需要考虑的情况如下
1. 只有在鼠标按下的时候才可以使用鼠标移动事件
2. 鼠标移动的时候控件重新调整位置
为了有效控制第一个条件,所以可以将鼠标移动事件的绑定推迟到鼠标按下事件中,而不是在初始化时完成,另外要记录下初始状态下鼠标位于控件中的坐标,这里注意MouseEventArgs参数中的X,Y表示的是鼠标在当前控件中的layout坐标,而不是鼠标在主窗口中的坐标。
rivate void button1_MouseDown(object sender, MouseEventArgs e)
{
this.tmpx = e.X;
this.tmpy = e.Y;
this.button1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.button1_MouseMove);
}
同时在鼠标送开事件中再将该方法绑定脱离
private void button1_MouseUp(object sender, MouseEventArgs e)
{
this.button1.MouseMove -= new System.Windows.Forms.MouseEventHandler(this.button1_MouseMove);
}
最后是MouseMove事件
private void button1_MouseMove(object sender, MouseEventArgs e)
{
this.button1.Location = new System.Drawing.Point(this.button1.Location.X + e.X - this.tmpx, this.button1.Location.Y + e.Y - this.tmpy);
}
这里重新计算了控件的新位置。
例子中使用了button作为实验对象并且额外定义了
private int tmpx = 0;
private int tmpy = 0;
MouseDown(object sender, MouseEventArgs e)
MouseUp(object sender, MouseEventArgs e)
MouseMove(object sender, MouseEventArgs e)
这三个函数的作用分别是鼠标按下时激活,鼠标松开激活和鼠标移动
需要考虑的情况如下
1. 只有在鼠标按下的时候才可以使用鼠标移动事件
2. 鼠标移动的时候控件重新调整位置
为了有效控制第一个条件,所以可以将鼠标移动事件的绑定推迟到鼠标按下事件中,而不是在初始化时完成,另外要记录下初始状态下鼠标位于控件中的坐标,这里注意MouseEventArgs参数中的X,Y表示的是鼠标在当前控件中的layout坐标,而不是鼠标在主窗口中的坐标。
rivate void button1_MouseDown(object sender, MouseEventArgs e)
{
this.tmpx = e.X;
this.tmpy = e.Y;
this.button1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.button1_MouseMove);
}
同时在鼠标送开事件中再将该方法绑定脱离
private void button1_MouseUp(object sender, MouseEventArgs e)
{
this.button1.MouseMove -= new System.Windows.Forms.MouseEventHandler(this.button1_MouseMove);
}
最后是MouseMove事件
private void button1_MouseMove(object sender, MouseEventArgs e)
{
this.button1.Location = new System.Drawing.Point(this.button1.Location.X + e.X - this.tmpx, this.button1.Location.Y + e.Y - this.tmpy);
}
这里重新计算了控件的新位置。
例子中使用了button作为实验对象并且额外定义了
private int tmpx = 0;
private int tmpy = 0;
- c# winform实现拖拽控
- C# 实现WinForm 全屏
- 实现 C# Winform截屏
- C# winform进度条实现
- c# winform 实现多线程
- C#实现winform天气预报
- C# winform 实现MD5加密
- C#版winform实现UrlEncode
- C#版winform实现UrlEncode
- C#实现透明WinForm控件
- C# Winform 实现透明label
- c#实现winform关机代码
- C# winform窗体动画实现
- C#实现MD5加密,winform c#2005
- C#实现MD5加密,winform c#2005
- winform:C# WinForm中实现基于角色的权限菜单
- winform:C# WinForm中实现基于角色的权限菜单
- winForm中C#实现Excel的导出
- VC++ MFC DLL动态链接库编写详解(转)
- 北大四学生入围英国电影学院游戏设计大奖
- 1.JBoss下利用JAAS处理登录
- 优化SQL Server的内存占用之执行缓存
- = 和 equal 的区别
- c# winform实现拖拽控
- Linux环境进程间通信:管道及有名管道
- ASP.NET中Gridview控件高级技巧详细分析
- JDK 7 中的 Fork/Join 模式 轻松实现多核时代的并行计算
- 做个抉择就如此难?
- 常见网络设备的功能解说 第三部分
- MIDP2.1规范的新特性
- Spring的核心机制依赖注入简介
- mysql动态sql语句