通过剪切或复制从剪贴板粘贴文件

时间:2019-09-04 11:52:43

标签: c# .net clipboard copy-paste cut

.NET Clipboard类具有一些方法,可以将文件放入剪贴板,并定义是否应移动或复制(剪切/复制)文件。

但是,如果我想粘贴已复制到剪贴板中的文件,则无法找到使用标准剪贴板方法剪切或复制的文件。

1 个答案:

答案 0 :(得分:3)

该信息存储在名为“首选DropEffect”的剪贴板数据对象中。 包含4字节数组的内存流的第一个字节包含System.Windows.DragDropEffects的枚举值:

public static void PasteFilesFromClipboard(string aTargetFolder)
{
    var aFileDropList = Clipboard.GetFileDropList();
    if (aFileDropList == null || aFileDropList.Count == 0) return;

    bool aMove = false;

    var aDataDropEffect = Clipboard.GetData("Preferred DropEffect");
    if (aDataDropEffect != null)
    {
        MemoryStream dropEffect = (MemoryStream)aDataDropEffect;
        byte[] moveEffect = new byte[4];
        dropEffect.Read(moveEffect, 0, moveEffect.Length);
        aMove = moveEffect[0] == 2;
    }

    foreach (string aFileName in aFileDropList)
    {
        if (aMove) { } // Move File ...
        else { } // Copy File ...
    }
}

[Flags]
public enum DragDropEffects
{
    Scroll = int.MinValue,
    All = -2147483645,
    None = 0,
    Copy = 1,
    Move = 2,
    Link = 4
}