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>(); System.Collections.Specialized.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 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("PreferredDropEffect", memo); Clipboard.SetDataObject(data, false); } /// <summary> /// 获取剪贴板中的文件列表(方法) /// </summary> /// <returns>System.Collections.List<string>返回剪切板中文件路径集合</returns> public static List<string> GetClipboardList() { List<string> clipboardList = new List<string>(); StringCollection sc = Clipboard.GetFileDropList(); foreach (var listFileName in sc) { clipboardList.Add(listFileName); } return clipboardList; } }