我有一个基本的 winforms MDI 应用程序,用作多文档编辑器。
什么工作
- 在没有打开文档的情况下,将文件从资源管理器拖到客户区会按预期触发容器拖放事件。
- 如果打开的文档不表明它支持拖放,则将文件从资源管理器拖放到它也会触发容器拖放事件。
什么不工作
- 如果我打开了一个支持拖放的文档,那么当文件被拖到它上面时,它会获取拖放事件。这是预期的,也是必需的,因为文档使用了拖动。但是对于某些数据类型(特别是在拖动文件时),我仍然希望父级处理它。
基本上我需要一种方法来选择性地将拖放事件推迟到父容器。
可以在此处下载基本示例应用程序。
https://www.dropbox.com/sh/0iefczgq6bqmgwg/7F-SfeJLBL/Code/DragDropTest.zip
本质上我想做的是
private void EditorControl_DragEnter(object sender, DragEventArgs e)
{
Debug.WriteLine(this.Name + " DragEnter");
// if we know about the data being dragged
if (e.Data.GetDataPresent("MyData"))
{
// control specific drag handler
}
else
{
// we don't know how to deal with the drop data so
// pass the event to the parent form/control
this.ParentForm.FireDragEnter();
}
}
有什么想法吗?