注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

BCB-DG's Blog

...

 
 
 

日志

 
 

ListView之间的拖放功能的实现  

2013-07-02 14:26:07|  分类: DotNet |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
//轉

ListView之间的拖放功能的实现主要是要实现三个事件:ItemDrag,DragEnter,DragDrop.这三个事件只有第一个事件是当前listview触发的。其它的两个都是由目标listview控件触发的。下面是我源代码:

ItemDrag事件

 private void lvLocalFile_ItemDrag(object sender, ItemDragEventArgs e)
        
{
            
//如果是鼠标右键则返回
            if (e.Button == MouseButtons.Right)
            
{
                
return;
            }

            
//判断当前控件里是否有item,如果没有则返回
            if (lvLocalFile.SelectedIndices.Count <= 0)
            
{
                
return;
            }

            IEnumerator selCol 
= lvLocalFile.SelectedItems.GetEnumerator();
            selCol.MoveNext();
            ListViewItem item 
= (ListViewItem)selCol.Current;
            
string path = cmbLocalPath.Text + item.Text;
            
if (item != null)
            
{
                path 
= path.IndexOf(".",0)==-1?path + @"":path;
                lvLocalFile.DoDragDrop(path, DragDropEffects.Copy);
            }

        }

 

DragEnter事件源代码:

 

//远程文件列表有item拖进时事件
        private void lvRemoteFile_DragEnter(object sender, DragEventArgs e)
        
{
            
if (e.Data.GetDataPresent(DataFormats.Text))
            
{
                e.Effect 
= DragDropEffects.Copy;
            }

            
else
            
{
                e.Effect 
= DragDropEffects.None;
            }

        }

在这个事件是。你需要设置DragDropEffects属性。这个里有几个可以选择的。但我们较常的用的一般就是Copy和Move,Copy就 是在目标listview里创建一个源listveiw的副本。而Move则是在目标listview 里创建源listveiw里的item一个副本的同时将源listeview里的item删除。

DragDrop事件的源代码:

 

 //远程文件列表的DragDrop事件
        private void lvRemoteFile_DragDrop(object sender, DragEventArgs e)
        
{
            
string path = e.Data.GetData(DataFormats.Text).ToString();
            
//下面开始上传文件,本地中径为path,远程路径cmbRemotePath.Text
            ArrayList paths = new ArrayList();
            paths.Add(path);
            paths.Add(cmbRemotePath.Text
+Path.GetFileName(path));
            ThreadPool.QueueUserWorkItem(UpLoad,paths);
        }
  评论这张
 
阅读(597)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017