C#窗体拖动
来源:互联网 发布:中恒d10软件 编辑:程序博客网 时间:2024/06/11 21:29
using System;
using System.Drawing;
using System.Windows.Forms;
namespace Yoker.FormUtils
{
////
/// 说明:窗体拖动类,通过这个类提供的方法实现窗体上任意控件可辅助拖动窗体
/// 作者:Yoker.Wu
/// 原创地址:[url]http://Yoker.cnblogs.com[/url]
///
public classdragFormClass
{
privatestatic bool isMouseDown = false;
privatestatic Point mouseOffset;
privatestatic Form. _form;
publicdragFormClass() { }
///
/// 在窗体上增加拖拽事件
///
/// 控件对象
publicstatic void bindControl(Control control)
{
//如果控件为空
if(control == null)
{
return;
}
_form. =control.FindForm();
//增加鼠标拖动窗体移动事件
control.MouseMove+= new MouseEventHandler(control_MouseMove);
control.MouseDown+= new MouseEventHandler(control_MouseDown);
control.MouseUp+= new MouseEventHandler(control_MouseUp);
}
///
/// 鼠标按下之时,保存鼠标相对于窗体的位置
///
///
///
privatestatic void control_MouseDown(object sender, MouseEventArgs e)
{
if(e.Button == MouseButtons.Left)
{
Controlcontrol = sender as Control;
intffsetX = - e.X;
intffsetY = - e.Y;
//判断是窗体还是控件,从而改进鼠标相对于窗体的位置
if(!(control is System.Windows.Forms.Form))
{
ffsetX= offsetX - control.Left;
ffsetY= offsetY - control.Top;
}
//判断窗体有没有标题栏,从而改进鼠标相对于窗体的位置
if(_form.FormBorderStyle. != FormBorderStyle.None)
{
ffsetX= offsetX - SystemInformation.FrameBorderSize.Width;
ffsetY= offsetY - SystemInformation.FrameBorderSize.Height -SystemInformation.CaptionHeight;
}
mouseOffset= new Point(offsetX, offsetY);
isMouseDown= true;
}
}
///
/// 移动鼠标的时候改变窗体位置
///
///
///
privatestatic void control_MouseMove(object sender, MouseEventArgs e)
{
if(isMouseDown)
{
Pointmouse = Control.MousePosition;
mouse.Offset(mouseOffset.X,mouseOffset.Y);
_form.Location= mouse;
}
}
///
/// 松开鼠标的时候,重设事件
///
///
///
privatestatic void control_MouseUp(object sender, MouseEventArgs e)
{
if(e.Button == MouseButtons.Left)
{
isMouseDown= false;
}
}
}
}
- C#窗体拖动
- c# 拖动窗体
- C#拖动无标题栏窗体
- C#拖动无标题栏窗体
- C#鼠标拖动窗体代码
- C#窗体无标题栏拖动
- C# WinForm自定义拖动窗体
- c# winfrom禁止拖动窗体
- c#拖动无状态栏窗体
- C#无标题窗体的拖动
- [原创]用C#创建可拖动窗体
- 用C#创建可拖动窗体
- 用C#创建可拖动窗体
- C# 如何鼠标拖动无边框窗体
- c# 移动拖动无边框窗体
- c# 拖动无边框窗体 张宇轩
- C#通过拖动窗体移动窗口
- C#实现无标题栏窗体的拖动
- Crazy Shopping(拓扑排序+完全背包)
- BestCoder Round #29——A--GTY's math problem(快速幂(对数法))、B--GTY's birthday gift(矩阵快速幂)
- Evolution(矩阵快速幂)
- Linux上跑程序加大内存
- Hbase 简介
- C#窗体拖动
- 常系数线性递推的第n项及前n项和 (Fibonacci数列,矩阵)
- Fibonacci(矩阵)
- M斐波那契数列(矩阵快速幂+费马小定理)
- Another kind of Fibonacci(矩阵)
- Contemplation! Algebra(矩阵快速幂,uva10655)
- 233 Matrix(hdu5015 矩阵)
- Training little cats(poj3735,矩阵快速幂)
- Power of Matrix(uva11149+矩阵快速幂)