WinForm控件拖拽类

  前言:卖麻辣烫归来后实在太累,写代码来消遣,最近搞Winform,感觉标题栏太丑,就想拖拽窗体,自己写了个拖拽控件类,方便自己使用,没啥技术含量,就是想瞎写写,明天打印出来贴在店里,没事盯着,缅怀我逝去的程序员生涯。

public   class  DragControl
    {
        
private  Control _drag  =   null ;
        
private  Control _move  =   null ;
        
private  Cursor _oldCursor  =   null ;

        
private   int  initialX;
        
private   int  initialY;

        
private  DragControl() { }
        
public  DragControl(Control drag,Control move)
        {
            _drag 
=  drag;
            _move 
=  move;
        }
        
public  DragControl(Control dragControl) :  this (dragControl, dragControl) { }

        
public   void  CloseDrag()
        {
            _drag.Cursor 
=  _oldCursor;
            _drag.MouseDown 
-=  MoveTipDown;
        }

        
public   void  OpenDrag()
        {
            _oldCursor 
=  _drag.Cursor;
            _drag.Cursor 
=  Cursors.SizeAll;
            _drag.MouseDown 
+=  MoveTipDown;
        }

        
private   void  MoveTipDown( object  sender, MouseEventArgs e)
        {
            initialX 
=  e.X;
            initialY 
=  e.Y;
            _drag.MouseMove 
+=  MoveTipMove;
            _drag.MouseUp 
+=  MoveTipUp;
        }

        
private   void  MoveTipUp( object  sender, MouseEventArgs e)
        {
            _drag.MouseMove 
-=  MoveTipMove;
            _drag.MouseUp 
-=  MoveTipUp;
        }

        
private   void  MoveTipMove( object  sender, MouseEventArgs e)
        {
            
if  (e.Y  !=  initialY) _move.Top  =  _move.Top  +  (e.Y  -  initialY);
            
if  (e.X  !=  initialX) _move.Left  =  _move.Left  +  (e.X  -  initialX);
        }
    }

转载于:https://www.cnblogs.com/newzhq/archive/2011/07/13/2105455.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值