C#在拖动操作中是否检测到桌面文件夹鼠标向上移动?
<在发布此消息之前,我已审阅了SO显示的“相关问题”> 情景:C#在拖动操作中是否检测到桌面文件夹鼠标向上移动?,c#,winapi,desktop,directory,drag-and-drop,C#,Winapi,Desktop,Directory,Drag And Drop,情景: 从WinForm中的控件启动拖放 注意:所有拖放代码都经过验证和仔细测试。我现在就可以使用代码了 释放鼠标时在桌面上创建/写入文件 拖动到窗体外部,鼠标移到桌面或桌面上的某个“项目”上 [根据Groo的评论进行编辑] 在这种情况下,拖放可能会进入桌面(在那里它将成为一个文件:该案例已经处理);或者,拖放可能会进入另一个应用程序运行实例中相同类型的控件(与从中启动拖动的控件相同)(该情况已得到处理)。我要问的情况是,在桌面文件夹中的数据丢失发生在哪里:Groo的评论让我们想测试一下,试图“
如果您的文件在开始拖动之前就已经存在(或者您可以在之前创建它),您只需在传递给
DoDragDrop
方法的DataObject
实例中指定源文件路径即可
类似这样的内容(您应该已经有了相应的处理程序):
如果您有兴趣在拖动时添加一些奇特的半透明效果,请尝试。如果您的文件不存在,并且在将其放到资源管理器后确实需要创建它,请选中
您还可以重写DataObject
以处理对象被删除时调用的GetData
方法:
public class MyDataObject : DataObject
{
public MyDataObject(string format, object data)
: base(format, data) { }
public override object GetData(string format)
{
MessageBox.Show("Format: "+format);
return base.GetData(format);
}
}
谢谢,Groo,我会研究你回复的链接和代码,我会在我的帖子中添加一条评论,这可能会澄清为什么在这种情况下,我没有将文件格式对象放入DataObject中。最好的,
public class MyDataObject : DataObject
{
public MyDataObject(string format, object data)
: base(format, data) { }
public override object GetData(string format)
{
MessageBox.Show("Format: "+format);
return base.GetData(format);
}
}