Winform中实现拖动

ContractedBlock.gif ExpandedBlockStart.gif Code
      开始,确定所要拖动的数据,并且启用数据收集功能,用DoDrapDrop完成,此方法由Control类定义。在拖动之前收集数据内容。
格式:
public DragDropEffects DoragDrop(object data,DragDropEffects allowedEffects)data:为用户所要拖动的数据内容,allowedEffects参数指定拖动效果:  
 成员名称         说明 
 None         放置目标不接受该数据。 
 Copy         将拖动源中的数据复制到放置目标。 
 Move         将拖动源的数据移动到放置目标。 
 Link         将拖动源中的数据链接到放置目标。 
 Scroll       拖动时可以滚动目标,以定位在目标中当前不可见的某个放置位置。 
 All          Copy、Link、Move 和 Scroll 效果的组合。 

     启用数据收集的相关代码,必须放在开始执行拖动操作的事件里,最普遍的放在MouseDown事件。
     取得数据后,便是把数据拖动到目标处 :事件DragEnter和DragDrop。DragEnter事件当拖动的数据进入目标时触发,在这个事件中必须编写数据被放置时所要完成的效果,必须为上面DragDropEffects枚举成员之一。                                                                    
     事件定义:
public event DragEventHandler DragEnter 这个事件是通过委派用来处理控件的DragDrop, DragEnter 或DragOver等拖放操作的相方法。
     委派定义:
public delegate void DragEventHandler(object sender,DragEventArgs e)
              
//后台代码生成DragEventHandler
// this.txtTarget.DragDrop += new System.Windows.Forms.DragEventHandler(this.txtTarget_DragDrop)
// this.txtTarget.DragEnter += new System.Windows.Forms.DragEventHandler(this.txtTarget_DragEnter);

 AllowedEffects 获取 DragDropEffects 枚举的成员,它指定拖动事件的发起方允许哪些操作。 
 Data 获取一个数据对象,该对象包含与对应拖动事件关联的数据。 
 Effects 获取或设置目标拖放操作。 
 Handled 获取或设置一个值,该值指示路由事件在路由过程中的事件处理当前状态。 (继承自 RoutedEventArgs。) 
 KeyStates 获取一个标志枚举,指示 Shift、Ctrl 和 Alt 键的当前状态以及鼠标按钮的状态。 
 OriginalSource 在父类进行任何可能的 Source 调整之前,获取原始报告源(由纯粹命中测试确定)。 (继承自 RoutedEventArgs。) 
 RoutedEvent 获取或设置与此 RoutedEventArgs 实例关联的 RoutedEvent。 (继承自 RoutedEventArgs。) 
 Source 获取或设置对引发事件的对象的引用。 (继承自 RoutedEventArgs。) 

ContractedBlock.gif ExpandedBlockStart.gif Code
       /// <summary>
        
/// 开始拖放操作
        
/// </summary>
        
/// <param name="sender"></param>
        
/// <param name="e"></param>
        private void txtSource_MouseDown(object sender, MouseEventArgs e)
        {
            txtSource.DoDragDrop(txtSource.Text, DragDropEffects.Copy 
| DragDropEffects.Link);
        }
        
/// <summary>
        
/// 用鼠标将某项拖到该控件工作区时发生
        
/// </summary>
        
/// <param name="sender"></param>
        
/// <param name="e"></param>
        private void txtTarget_DragEnter(object sender, DragEventArgs e)
        {
            
//指定拖放的效果
            e.Effect = DragDropEffects.Copy;
        }
        
/// <summary>
        
/// 拖放完成时发生
        
/// </summary>
        
/// <param name="sender"></param>
        
/// <param name="e"></param>
        private void txtTarget_DragDrop(object sender, DragEventArgs e)
        {
           
//获取包含此事件关联的数据
            txtTarget .Text =e.Data .GetData ((DataFormats .Text )).ToString ();
        }

转载于:https://www.cnblogs.com/hubcarl/archive/2009/05/26/1490080.html

猜你喜欢

转载自blog.csdn.net/weixin_34228662/article/details/93817238
今日推荐