zoukankan      html  css  js  c++  java
  • Control 的DraggerHelper, 拖动控件从此变得很简单。。。

    程序员经常要实现拖动控件的功能,一般实现这个功能,都要注册事件,然后写MouseMove的代码,

    Point point = Point.Empty;
    
    control.MouseDown += control_MouseDown;
    control.MouseMove += control_MouseMove;
     control.MouseLeave += control_MouseLeave;

    如果程序的很多地方都有这个逻辑的话,那么代码就会有一大部分的重复了。

    在网上如果你搜索控件拖动的话,大部分代码都是上面的代码,重复的逻辑,重复的故事。

    于是我想,能不能写一个帮助类,当需要拖动的时候,只要调用EnableDrag方法就行了,如下:

    private void Form1_Load(object sender, EventArgs e)
    {
        DraggerHelper.EnableDrag(button1);
        DraggerHelper.EnableDrag(label1);
    
        DraggerHelper.DisableDrag(button1);
        DraggerHelper.DisableDrag(label1);
    }

    要实现这个效果,需要一些小技巧,当然,这些已经封装进了DraggerHelper 类。

    完整的代码如下:

    完整的代码

    这里是如何使用DragHelper的例子:

    private void Form1_Load(object sender, EventArgs e)
    {
        DraggerHelper.EnableDrag(button1);
        DraggerHelper.EnableDrag(label1);
    
        DraggerHelper.DisableDrag(button1);
        DraggerHelper.DisableDrag(label1);
    }
    
    private void button1_Click(object sender, EventArgs e)
    {
        if (label1.IsControlCanDrag())
        {
            label1.DisableDrag();
        }
        else
        {
            label1.EnableDrag();
        }
    }

     完整的代码:ControlDragger.rar

    本文参考了:WCCC的杰出的文章:http://www.cnblogs.com/whc-blog/archive/2011/08/26/2154038.html

    另外本文不讨论设计,虽然我知道当前设计不一定是最好的,很多复杂的情况都没有涵盖到,不过基本的情况已经覆盖了,欢迎大家扩展和填充。

    作者:LoveJenny
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    LAMP----linux+apache+mysql+php详细安装步骤之一APACHE篇(openldap等)
    Apache2 httpd.conf 配置详解
    Apache+php+mysql的安装与配置
    linux PHP 安装及 GD库安装
    Linux下安装PHP的GD支持库
    linux下tar.gz、tar、bz2、zip等解压缩、压缩命令
    Android中Context详解 ---- 你所不知道的Context(转)
    Android简单文件浏览器源代码 (转)
    Android入门之文件系统操作(一)简单的文件浏览器 (转)
    Android入门之文件系统操作
  • 原文地址:https://www.cnblogs.com/LoveJenny/p/2970433.html
Copyright © 2011-2022 走看看