C# 模拟将文件拖放到WPF窗口中
在我的应用程序中,我支持拖放,当用户执行此操作时,代码的这一部分工作正常 现在,我想让人们能够创建用于测试和调试等的自定义脚本。因此,我需要一种方法来模拟将文件从windows文件拖到我的应用程序中的效果 我已创建一个命令:C# 模拟将文件拖放到WPF窗口中,c#,wpf,drag-and-drop,C#,Wpf,Drag And Drop,在我的应用程序中,我支持拖放,当用户执行此操作时,代码的这一部分工作正常 现在,我想让人们能够创建用于测试和调试等的自定义脚本。因此,我需要一种方法来模拟将文件从windows文件拖到我的应用程序中的效果 我已创建一个命令: MCommandsManager.CreateEventSimulationCommand<string[]>(this, "Shell", "DragAndDrop", (o) => DragAndDropHandler(o)); 这调用了我的函数:
MCommandsManager.CreateEventSimulationCommand<string[]>(this, "Shell", "DragAndDrop", (o) => DragAndDropHandler(o));
这调用了我的函数:
private object DragAndDropHandler(string[] o)
{
string filePath = o[0];
if (File.Exists(filePath))
{
var data = new DataObject(DataFormats.FileDrop, o);
DragDrop.DoDragDrop(this, data, DragDropEffects.Move | DragDropEffects.Copy);
}
return false;
}
奇怪的是,当我执行这个时,我想要的临时文件会在我的VS中打开。。。而不是在我的应用程序中
有没有其他API我应该看看。DragDrop似乎没有我所需要的功能。你试过利用UIA吗?从没听说过,我想我还有一些功课要做。所有标准windows控件中内置的可访问性API可以满足很多需求:顶级GUI测试。不过,渐变有时会有点棘手,所以它不是一个普遍适用的搭配。您需要调查UIA和MSAA:
private object DragAndDropHandler(string[] o)
{
string filePath = o[0];
if (File.Exists(filePath))
{
var data = new DataObject(DataFormats.FileDrop, o);
DragDrop.DoDragDrop(this, data, DragDropEffects.Move | DragDropEffects.Copy);
}
return false;
}