gpt4 book ai didi

c# - 拖放和两种形式。如何检测外部应用程序何时发生掉落

转载 作者:行者123 更新时间:2023-11-30 15:12:42 25 4
gpt4 key购买 nike

我有一个 WinForm,用户可以从中将项目拖到不同的应用程序。在我的例子中,第二个应用程序是 SolidWorks。让拖动部分正常工作没有问题。用户能够将零件从我的应用程序拖到 SolidWorks 工程图中,但我想在用户将项目放到工程图中时关闭我的 WinForm。

有没有我遗漏的事件? QueryContinueDrag 似乎不是。我可以放下零件一整天,但 QueryContinueDrag 不会在放下时触发。

编辑:这是我用来启动拖动操作的代码示例。我只是不知道其他应用程序何时发生掉落。

 string[] fList = new string[1];
fList[0] = @"C:\block.sldblk";
DataObject dataObj = new DataObject(DataFormats.FileDrop, fList);
DragDropEffects eff = DoDragDrop(dataObj, DragDropEffects.Link | DragDropEffects.Copy);

最佳答案

最好的选择可能是在调用 DoDragDrop() 时使用 IDataObject 作为数据。

不是直接将您想要的数据放在那里,而是创建一个继承自 IDataObject 的类来保存您的数据。当用户“放下”部件时,将调用 IDataObject 的“GetData”方法。您可以使用它来设置一个标志以关闭您的表单或向用户反馈已发生掉落。

请注意,已经提供了 IDataObject 的实现 - DataObject。扩展或使用它通常比尝试创建您自己的要容易得多。

编辑:我看到您已经在使用 DataObject - 而不是使用它,而是使用派生类并覆盖 GetData,这将在发生放置时调用。

关于c# - 拖放和两种形式。如何检测外部应用程序何时发生掉落,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/894582/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com