剪贴板剪切/复制与粘贴文件+1个待解决的问题

本文介绍了一种在Windows环境中通过剪贴板实现文件复制和移动的方法,并提供了具体代码实现。同时探讨了在Windows Mobile设备中复制文件时遇到的问题及可能的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

现在网上大多数对剪贴板的操作都只是对文本进行操作,很少有对文件进行操作的,codeProject上找到了解决方法,但还有一个问题困扰了我(等下再说,其实放在首页就是看看大家能不能帮忙解决)。

先看看具体的代码:

ContractedBlock.gif ExpandedBlockStart.gif 剪切/复制文件
void CopyToClipboard(bool cut)
{
    
string[] files = GetSelection();
    
if(files != null)
    {
        IDataObject data 
= new DataObject(DataFormats.FileDrop, files);
        MemoryStream memo 
= new MemoryStream(4);
        
byte[] bytes = new byte[]{(byte)(cut ? 2 : 5), 000};
        memo.Write(bytes, 
0, bytes.Length);
        data.SetData(
"Preferred DropEffect", memo);
        Clipboard.SetDataObject(data);
    }
}

对粘贴文件的处理:

ContractedBlock.gif ExpandedBlockStart.gif 粘贴文件的处理
private void pasteMenuItem_Click(object sender, System.EventArgs e)
{
    IDataObject data 
= Clipboard.GetDataObject();
    
if (!data.GetDataPresent(DataFormats.FileDrop))
        
return;

    
string[] files = (string[])
      data.GetData(DataFormats.FileDrop);
    MemoryStream stream 
= (MemoryStream)
      data.GetData(
"Preferred DropEffect"true);
    
int flag = stream.ReadByte();
    
if (flag != 2 && flag != 5)
        
return;
    
bool cut = (flag == 2);
    
foreach (string file in files)
    {
        
string dest = homeFolder + "\\" + 
                      Path.GetFileName(file);
        
try
        {
            
if(cut)
                File.Move(file, dest);
            
else
                File.Copy(file, dest, 
false);
        }
        
catch(IOException ex)
        {
            MessageBox.Show(
this"Failed to perform the" + 
                
" specified operation:\n\n" + ex.Message, 
                
"File operation failed"
                MessageBoxButtons.OK, MessageBoxIcon.Stop);
        }
    }

    RefreshView();
}

注意点:

一、把文件路径的列表SetData到剪贴板,注意一定要是数组形式。对一个文件进行操作也要以数组方式。
二、把标志信息也按照一定的格式SetData到剪贴板

文章出处:http://www.codeproject.com/KB/shell/Explorer_Drag_Drop.aspx

相关文章:http://tianmoboping.blog.163.com/blog/static/1573953220087273219414/#comment=fks_082071082082085074080080083095085083086064093083085065

问题:如果在windows mobile中,在移动设备里剪切/复制一个文件,发现在剪贴板中没有任何东西,而普通的windows文件则会有路径和标志位。现在的问题是如果从设备中剪切/复制文件,我怎么让PC能够进行粘贴,因为PC上是不认类似”\\application...“的路径的。

转载于:https://www.cnblogs.com/ssqjd/archive/2009/06/16/1504169.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值