创建可拖动控件

/**/

转自http://longzhaokai.cnblogs.com/archive/2005/09/16/238512.html
///文件名称:ControlMove.cs
///生成时间:2005.8.2
///作    者:龙照凯
///功能说明:
///          控件拖动、调整大小类(任何具备拖动能力的控件均可)
///          1、实现控件在父控件内随意拖动
///          2、可通过触模柄调整控件大小
///          3、可通过键盘对控件位置进行微调
///          4、DELETE快捷键删除控件
///


using System;
using System.Windows.Forms;
using System.Drawing;

namespace ImageTool
{
    
/**/
    public class ControlMove
    
{

        
private定义

        
#region 构造函数

        
/// <summary>
        
/// 构造控件拖动对象
        
/// </summary>
        
/// <param name="moveControl">需要拖动的控件</param>

        public ControlMove(Control moveControl)
        


        
#endregion


        
需拖动控件键盘事件

        
#region 需拖动控件鼠标事件

        
private void Control_Click(object sender, System.EventArgs e)
        
{
            _textbox.Focus();
            _MControl 
= (sender as Control);
            MoveHandles();

            
if (_IsCtrlKey == false)
            
{
                
for(int i=0;i<_MControl.Parent.Controls.Count;i++)
                
{
                    
if(_MControl.Parent.Controls[i].Text.Trim().Length == 0 && _MControl.Parent.Controls[i] is Label)
                    
{
                        _MControl.Parent.Controls[i].Visible 
= false;
                    }

                }

            }

        }


        
private void Control_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
        
{
            _IsMouseDown 
= true;
            _oPointClicked 
= new Point(e.X,e.Y);
            
for (int i = 0; i<8; i++
            
{
                _MControl.Parent.Controls.Add(_lbl[i]);
                _lbl[i].BringToFront();
            }

            HideHandles();
        }


        
private void Control_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
        
{
            _IsMouseDown 
= false;
            MoveHandles();
            ShowHandles();
            _MControl.Visible 
= true;
        }


        
private void Control_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
        
{
            
if(_IsMouseDown)
            
{
                
int l =  _MControl.Left + e.X - _oPointClicked.X;
                
int t = _MControl.Top + e.Y - _oPointClicked.Y;
                
int w = _MControl.Width;
                
int h = _MControl.Height;
                l 
=(l<0)?0:((l+> _MControl.Parent.ClientRectangle.Width)?
                    _MControl.Parent.ClientRectangle.Width
-w:l);
                t 
=(t<0)?0:((t+h> _MControl.Parent.ClientRectangle.Height)?
                    _MControl.Parent.ClientRectangle.Height
-h:t);
                _MControl.Left 
= l;
                _MControl.Top 
= t;
                ControlLocality();
            }

            
//_MControl.Cursor=Cursors.SizeAll;
        }


        
#endregion


        
调整大小触模柄鼠标事件

        
private方法
    }

}

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值