C# 按住鼠标左键移动窗体Form的位置,C#拖动窗体通用类

  C# 按住鼠标左键移动窗体Form的位置,C#拖动窗体通用类


C# 按住鼠标左键移动窗体Form的位置,C#拖动窗体通用类




C# Code:

private void frmLogin_Load(object sender, EventArgs e)
{
  
//使用方法:在窗体的Load事件调用
  
FormDragDrop.Handle(this);
    
}

//来源:C/S框架网 | www.csframework.com | QQ:23404761




FormDragDrop.cs类:



C# Code:

/// <summary>
/// 拖动鼠标移动窗体Form通用类
/// </summary>
public class FormDragDrop
{
  
private Point _MouseOffset;
  
private bool _IsMouseDown = false;
  
private Form _form;
  
  
private FormDragDrop(Form form)
  {
    _form
= form;
  }
  
  
/// <summary>
  
/// 使用方法
  
/// </summary>
  
/// <param name="form"></param>
  
public static void Handle(Form form)
  {
    FormDragDrop F
= new FormDragDrop(form);
    F.HandleEvents();
  }
  
  
private void HandleEvents()
  {
    _form.MouseDown +
= On_MouseDown;
    _form.MouseMove +
= On_MouseMove;
    _form.MouseUp +
= On_MouseUp;
  }
  
  
private void On_MouseDown(object sender, MouseEventArgs e)
  {
    
int xOffset;
    
int yOffset;
    
    
if (e.Button == MouseButtons.Left)
    {
      xOffset
= -e.X;
      yOffset
= -e.Y;
      _MouseOffset
= new Point(xOffset, yOffset);
      _IsMouseDown
= true;
    }
  }
  
  
private void On_MouseMove(object sender, MouseEventArgs e)
  {
    
if (_IsMouseDown)
    {
      Point mousePos
= Control.MousePosition;
      mousePos.Offset(_MouseOffset.X, _MouseOffset.Y);
      _form.Location
= mousePos;
    }
  }
  
  
private void On_MouseUp(object sender, MouseEventArgs e)
  {
    
if (e.Button == MouseButtons.Left)
    {
      _IsMouseDown
= false;
    }
  }
  
}

//来源:C/S框架网 | www.csframework.com | QQ:23404761




C/S框架网|原创精神.创造价值.打造精品

扫一扫加微信
C/S框架网作者微信 C/S框架网|原创作品.质量保障.竭诚为您服务



版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
C/S框架网
发表评论

评论内容
昵称:
关联文章

C# 按住鼠标移动Form位置,C#拖动通用
C#可拖动(实现无标题栏登录)
C# Winform 制作可任意拖动不规则背景图片
C# NavBarControl根据鼠标点击位置获取 NavBarGroup 对象
生成Form源码集成到VS解决方案 - C/S框架三层架构代码生成器操作指南
VS.NET 继承 - 按钮组件隐藏或位置不正确解决方案
在基扩展一个通用导出Excel文件按钮(支持导出所有表格数据到Xlsx文件)
C#通用勾选复选
C#设计模式-模板方法定义
通用文本提示对话框支持保存文本文件|C/S框架网
C#中处理全局鼠标及键盘勾子
C#通用勾选复选 (源码)
C#异步操作等待,异步多线程处理数据通用界面(frmThreadOperating)
C#多线程异步处理数据通用界面(frmThreadOperating)
平台里每个模块有个Form1,用来做什么?
C#使用Process运行外部程序,已运行程序自动还原主
框架提供关闭当前,除此之外全部关闭功能(弹出菜单)
C# 子中调用父方法(或多之间方法调用)
业务单据介绍
数据字典编写代码