代码之家  ›  专栏  ›  技术社区  ›  anon

如何只允许特定类型的复制?

  •  0
  • anon  · 技术社区  · 14 年前

    我使用库栏来显示一些有关系的项目。因为项目之间有不同的关系,所以我有多个容器。作为库栏的默认设置,如果将AllowDrop设置为true,则可以将所有元素拖到库栏中,并将项目添加到要删除的集合中。

    现在我不想要了。我不想把一个项目从一个库栏拖到另一个库栏。但是我不能将AllowDrop设置为false,因为我想将一些标记可视化拖到库栏中。

    所以我在处理DropEvents的方法中定义了:

    public void OnTargetDrop(object sender, SurfaceDragDropEventArgs e)
            {
                //only if TagVisualization
                if (e.Cursor.Data is Image)
                {
                    ((sender as LibraryBar).Tag as ISourceFile).unexpand();
                    e.Handled = true;
                }
                else
                {
                    //TODO: cancel Drag&Drop
                }
            }
    

    如您所见,只有当光标的数据是一个图像时,我才允许删除(因此我现在是一个标记可视化)。这样,就不可能再将项目从另一个库栏拖放到此库栏中。但是,如果项目拖到库栏上,则播放的动画仍将播放。如何对特定类型禁用此动画?

    1 回复  |  直到 14 年前
        1
  •  1
  •   Alex B    14 年前

    为DragCompleted事件添加事件处理程序。对于要排除的任何类型,将handled设置为true。DragCompletedEventArgs还具有Cursor.Data属性。