2

我有一个基本的 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();
        }
    }

有什么想法吗?

4

0 回答 0