Winform

/// <summary>
/// 复制或剪切文件至剪贴板(方法)
/// </summary>
/// <param name="files">需要添加到剪切板的文件路径数组</param>
/// <param name="cut">是否剪切true为剪切,false为复制</param>
public static void CopyToClipboard(string[] files, bool cut)
{
    if (files == null) 
        return;

    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);
}


/// <summary>
/// 获取剪贴板中的文件列表(方法)
/// </summary>
/// <returns>System.Collections.List<string>返回剪切板中文件路径集合</returns>
public static List<string> GetClipboardList()
{
    List<string> clipboardList = new List<string>();

    IDataObject dataObject = Clipboard.GetDataObject();

    if (dataObject.GetDataPresent(DataFormats.FileDrop))
    {
        System.Collections.Specialized.StringCollection sc = Clipboard.GetFileDropList();

        for (int i = 0; i < sc.Count; i++)
        {
            string listfileName = sc[i];

            clipboardList.Add(listfileName);
        }
    }

    return clipboardList;
}


/// <summary>
/// 获取剪贴板中的文件列表(方法)
/// </summary>
/// <param name="cut">true:剪切;false:复制</param>
/// <returns>System.Collections.List<string>返回剪切板中文件路径集合</returns>
public static List<string> GetClipboardList(out bool cut)
{
    List<string> clipboardList = new List<string>();

    cut = false;

    IDataObject dataObject = Clipboard.GetDataObject();

    if (dataObject.GetDataPresent(DataFormats.FileDrop))
    {
        MemoryStream memoryStream = (MemoryStream)dataObject.GetData("Preferred DropEffect", true);

        DragDropEffects dragDropEffects = (DragDropEffects)memoryStream.ReadByte();

        if ((dragDropEffects & DragDropEffects.Move) == DragDropEffects.Move)
        {
            cut = true;
        }

        StringCollection sc = Clipboard.GetFileDropList();

        for (int i = 0; i < sc.Count; i++)
        {
            string listfileName = sc[i];

            clipboardList.Add(listfileName);
        }
    }

    return clipboardList;
}

WPF

/// <summary>
/// 复制粘贴帮助类
/// </summary>
public static class ClipboardHelper
{

    /// <summary>
    /// 复制到剪切板
    /// </summary>
    /// <param name="text">文字</param> 
    public static void CopyText(string text)
    {
        Clipboard.SetText(text);
    }

    /// <summary>
    /// 复制或剪切文件到剪切板
    /// </summary>
    /// <param name="filePath">文件路径数组</param>
    /// <remarks>清空剪切板</remarks>
    public static void SetFileDrop(string filePath)
    {
        if (filePath == null) 
            return;

        SetFileDropList(new[] { filePath });
    }
    /// <summary>
    /// 复制或剪切文件到剪切板
    /// </summary>
    /// <param name="files">文件路径数组</param>
    /// <remarks>清空剪切板</remarks>
    public static void SetFileDropList(string[] files)
    {
        Clipboard.Clear();//清空剪切板 

        StringCollection strcoll = new StringCollection();

        foreach (var file in files)
        {
            strcoll.Add(file);
        }

        Clipboard.SetFileDropList(strcoll);
    }

    /// <summary>
    /// 复制或剪切文件到剪切板
    /// </summary>
    /// <param name="filePath">文件路径数组</param>
    /// <param name="cut">true:剪切;false:复制</param>
    public static void CopyFile(string filePath, bool cut = false)
    {
        if (filePath == null) 
            return;

        CopyFileList(new[] { filePath }, cut);
    }
    /// <summary>
    /// 复制或剪切文件到剪切板
    /// </summary>
    /// <param name="files">文件路径数组</param>
    /// <param name="cut">true:剪切;false:复制</param>
    public static void CopyFileList(string[] files, bool cut = false)
    {
        if (files == null) 
            return;

        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, false);
    }

    /// <summary>
    /// 获取剪贴板中的文件列表(方法)
    /// </summary>
    /// <returns>System.Collections.List<string>返回剪切板中文件路径集合</returns>
    public static List<string> GetFileList()
    {
        List<string> files = new List<string>();

        IDataObject dataObject = Clipboard.GetDataObject();

        if (dataObject.GetDataPresent(DataFormats.FileDrop))
        {
            StringCollection sc = Clipboard.GetFileDropList();

            foreach (var listFileName in sc)
            {
                files.Add(listFileName);
            }
        }

        return files;
    }

    /// <summary>
    /// 获取剪贴板中的文件列表(方法)
    /// </summary>
    /// <param name="cut">true:剪切;false:复制</param>
    /// <returns>System.Collections.List<string>返回剪切板中文件路径集合</returns>
    public static List<string> GetFileList(out bool cut)
    {
        List<string> files = new List<string>();

        cut = false;

        IDataObject dataObject = Clipboard.GetDataObject();

        if (dataObject.GetDataPresent(DataFormats.FileDrop))
        {
            MemoryStream memoryStream = (MemoryStream)dataObject.GetData("Preferred DropEffect", true);

            DragDropEffects dragDropEffects = (DragDropEffects)memoryStream.ReadByte();

            if ((dragDropEffects & DragDropEffects.Move) == DragDropEffects.Move)
            {
                cut = true;
            }

            StringCollection sc = Clipboard.GetFileDropList();

            foreach (var listFileName in sc)
            {
                files.Add(listFileName);
            }
        }

        return files;
    }
}

全部评论

发一条友善的评论... 取消回复

提醒 : 您所填写的邮箱地址不会被公开!

看不清?点击更换