.NET Clipboard类具有将文件放入剪贴板并定义它们是应该被移动还是复制(剪切/复制)的方法。
但是,如果我想要粘贴已经复制到剪贴板中的文件,我看不到使用标准剪贴板方法找出该文件是剪切还是复制的任何方法。
.NET Clipboard类具有将文件放入剪贴板并定义它们是应该被移动还是复制(剪切/复制)的方法。
但是,如果我想要粘贴已经复制到剪贴板中的文件,我看不到使用标准剪贴板方法找出该文件是剪切还是复制的任何方法。
信息存储在名为“Preferred 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 aDropEffect = (MemoryStream)aDataDropEffect;
byte[] aMoveEffect = new byte[4];
aDropEffect.Read(aMoveEffect, 0, aMoveEffect.Length);
var aDragDropEffects = (DragDropEffects)BitConverter.ToInt32(aMoveEffect, 0);
aMove = aDragDropEffects.HasFlag(DragDropEffects.Move);
}
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
}
var effect = (DragDropEffects)BitConverter.ToInt32(moveEffect, 0);
这种写法。 - René VogtScroll
标志不会出现在第一个字节中。还要注意,它在技术上是一个标志枚举,这意味着您应该检查第二个_位_,而不是整个值。 - Nyerguds
aMove
为真。我误解了吗? - 41686d6564 stands w. Palestine