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