c# 从我的自定义应用程序拖放到记事本

标签 c# drag-and-drop

我有一个需要支持拖放的自定义应用程序。 在我的应用程序中拖动网格时,我在其 DoDragDrop 方法中提供了要以序列化格式放置的对象。

当下降到我的一个应用程序时,它能够对字符串进行反序列化并创建对象。

我想要做的是让源应用程序也能够放入记事本/文本板。我可以看到我可以将文件从 Windows 资源管理器拖放到记事本,但无法将纯文本拖放到记事本。猜测它会检查 DragEnter 事件中的 DataFormat 并不允许使用字符串但允许将文件放入其中。

  • 有没有办法更改源应用程序中的 yr 格式,以便它提供临时文件/字符串。
  • 是否可以提供 2 种格式的数据,以便目标 drop 可以接受它喜欢的任何格式?

提前致谢!

最佳答案

您可以将多种格式的数据添加到传递给 DoDragDrop 调用的 DataObject 中,因此只需再次调用 SetData 即可添加新格式。这是最合适的实现方式,这样 Drop 目标就可以查询可用格式并选择它最喜欢的格式。

 DataObject d = new DataObject();
 d.SetData(DataFormats.Serializable, myObject);
 d.SetData(DataFormats.Text, myObject.ToString());
 myForm.DoDragDrop(d, DragDropEffects.Copy);

关于c# 从我的自定义应用程序拖放到记事本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1772102/

相关文章:

c# - 为什么派生自 ControllerBase 与 Controller for ASP.NET Core Web API?

c# - 暂时停止引发或处理表单事件?

C# 正则表达式通过 url 从 youtube 和 vimeo 获取视频 ID

node.js - 鼠标操作在 Protractor 中无法正常工作

html - 更改 HTML5 拖放文件的鼠标光标(GMail 拖放)

drag-and-drop - QML拖放(自由定位)

c# - STA 线程中止异常

c# - 您可以从 iOS C 插件 "on the spot"写入 Unity 纹理吗?

c++ - Qt,C++ : QListWidget internal drag&drop - how to connect to signal?

java - SWT Droptarget 重叠问题