全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

C# WinForm实现窗体上控件自由拖动功能示例

本文实例讲述了C# WinForm实现窗体上控件自由拖动功能。分享给大家供大家参考,具体如下:

说明:首先在窗体上放一个PictrueBox控件,命名为pb1,拖动完整代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WinFormDrag
{
  public partial class Form1 : Form
  {
    //鼠标按下坐标(control控件的相对坐标)
    Point mouseDownPoint = Point.Empty;
    //显示拖动效果的矩形
    Rectangle rect = Rectangle.Empty;
    //是否正在拖拽
    bool isDrag = false;
    public Form1()
    {
      InitializeComponent();
    }
    private void Form1_Paint(object sender, PaintEventArgs e)
    {
      if (rect != Rectangle.Empty)
      {
        if (isDrag)
        {//画一个和Control一样大小的黑框
          e.Graphics.DrawRectangle(Pens.Black, rect);
        }
        else
        {
          e.Graphics.DrawRectangle(new Pen(this.BackColor), rect);
        }
      }
    }
    /// <summary>
    /// 按下鼠标时
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void pb1_MouseDown(object sender, MouseEventArgs e)
    {
      if (e.Button == MouseButtons.Left)
      {
        mouseDownPoint = e.Location;
        //记录控件的大小
        rect = pb1.Bounds;
      }
    }
    /// <summary>
    /// 移过时
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void pb1_MouseMove(object sender, MouseEventArgs e)
    {
      if (e.Button == MouseButtons.Left)
      {
        isDrag = true;
        //重新设置rect的位置,跟随鼠标移动
        rect.Location = getPointToForm(new Point(e.Location.X - mouseDownPoint.X, e.Location.Y - mouseDownPoint.Y));
        this.Refresh();
      }
    }
    /// <summary>
    /// 释放鼠标按钮时
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void pb1_MouseUp(object sender, MouseEventArgs e)
    {
      if (e.Button == MouseButtons.Left)
      {
        if (isDrag)
        {
          isDrag = false;
          //移动control到放开鼠标的地方
          pb1.Location = rect.Location;
          this.Refresh();
        }
        reset();
      }
    }
    //重置变量
    private void reset()
    {
      mouseDownPoint = Point.Empty;
      rect = Rectangle.Empty;
      isDrag = false;
    }
    //把相对与control控件的坐标,转换成相对于窗体的坐标。
    private Point getPointToForm(Point p)
    {
      return this.PointToClient(pb1.PointToScreen(p));
    }
  }
}

更多关于C#相关内容感兴趣的读者可查看本站专题:《WinForm控件用法总结》、《C#窗体操作技巧汇总》、《C#数据结构与算法教程》、《C#常见控件用法教程》、《C#面向对象程序设计入门教程》及《C#程序设计之线程使用技巧总结》

希望本文所述对大家C#程序设计有所帮助。


# C#  # WinForm  # 窗体  # 控件  # 拖动  # C#实现一键清空控件值的示例代码  # C#在Windows窗体控件实现内容拖放(DragDrop)功能  # C#实现代码移除窗体上的控件  # 鼠标  # 程序设计  # 按下  # 相关内容  # 感兴趣  # 数据结构  # 给大家  # 相对于  # 转换成  # 更多关于  # 命名为  # 所述  # 使用技巧  # 面向对象  # 画一  # 拖拽  # 操作技巧  # 讲述了  # WinFormDrag 


相关文章: ui设计制作网站有哪些,手机UI设计网址吗?  建站之星ASP如何实现CMS高效搭建与安全管理?  如何续费美橙建站之星域名及服务?  专业公司网站制作公司,用什么语言做企业网站比较好?  建站之星价格显示格式升级,你的预算足够吗?  建站主机选哪种环境更利于SEO优化?  浅析上传头像示例及其注意事项  如何快速搭建FTP站点实现文件共享?  打鱼网站制作软件,波克捕鱼官方号怎么注册?  网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?  建站之星手机一键生成:多端自适应+小程序开发快速建站指南  如何快速登录WAP自助建站平台?  中山网站制作网页,中山新生登记系统登记流程?  详解jQuery停止动画——stop()方法的使用  如何在服务器上配置二级域名建站?  如何快速生成可下载的建站源码工具?  如何在IIS管理器中快速创建并配置网站?  在线教育网站制作平台,山西立德教育官网?  极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?  创业网站制作流程,创业网站可靠吗?  如何快速完成中国万网建站详细流程?  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  如何通过西部建站助手安装IIS服务器?  如何制作算命网站,怎么注册算命网站?  如何在景安云服务器上绑定域名并配置虚拟主机?  如何在Mac上搭建Golang开发环境_使用Homebrew安装和管理Go版本  常州企业网站制作公司,全国继续教育网怎么登录?  微课制作网站有哪些,微课网怎么进?  建站主机数据库如何配置才能提升网站性能?  上海网站制作开发公司,上海买房比较好的网站有哪些?  长沙做网站要多少钱,长沙国安网络怎么样?  如何快速配置高效服务器建站软件?  外贸公司网站制作,外贸网站建设一般有哪些步骤?  C#如何使用XPathNavigator高效查询XML  如何快速搭建二级域名独立网站?  网站制作培训多少钱一个月,网站优化seo培训课程有哪些?  如何选择适配移动端的WAP自助建站平台?  建站之星代理平台如何选择最佳方案?  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  制作旅游网站html,怎样注册旅游网站?  高端企业智能建站程序:SEO优化与响应式模板定制开发  如何通过多用户协作模板快速搭建高效企业网站?  文字头像制作网站推荐软件,醒图能自动配文字吗?  临沂网站制作公司有哪些,临沂第四中学官网?  如何选择服务器才能高效搭建专属网站?  上海网站制作网页,上海本地的生活网站有哪些?最好包括生活的各个方面的?  韩国服务器如何优化跨境访问实现高效连接?  网站制作公司广州有几家,广州尚艺美发学校网站是多少?  如何通过WDCP绑定主域名及创建子域名站点?  如何在腾讯云服务器上快速搭建个人网站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。