WEB开发网
开发学院软件开发C语言 剪贴板剪切/复制与粘贴文件+1个待解决的问题 阅读

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

 2009-06-16 08:33:27 来源:WEB开发网   
核心提示:现在网上大多数对剪贴板的操作都只是对文本进行操作,很少有对文件进行操作的,在codeProject上找到了解决方法,但还有一个问题困扰了我(等下再说,剪贴板剪切/复制与粘贴文件+1个待解决的问题,其实放在首页就是看看大家能不能帮忙解决),先看看具体的代码:剪切/复制文件voidCopyToClipboard(boolc

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

先看看具体的代码:

剪切/复制文件

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), 0, 0, 0};
        memo.Write(bytes, 0, bytes.Length);
        data.SetData("Preferred DropEffect", memo);
        Clipboard.SetDataObject(data);
    }
}

对粘贴文件的处理:

粘贴文件的处理

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:nn" + ex.Message, 
                "File operation failed", 
                MessageBoxButtons.OK, MessageBoxIcon.Stop);
        }
    }

    RefreshView();
}

注意点:

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

二、把标志信息也按照一定的格式SetData到剪贴板

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

Tags:剪贴板 剪切 复制

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接