1

问题

有没有办法在开始拖放操作时防止 treeviewer 获得焦点?或者您知道另一种防止它在拖动时更改其选择的方法吗?

情况

  • 第一类
    • 注释 1.1
  • 第 2 类
    • 注释 2.1

我有显示类别的 TreeViewer“类别”和显示所选类别中的注释的 1 个 TableViewer“注释”。“注释”视图内容由通过数据绑定选择“类别”视图提供。

问题

当我在“类别”视图中选择了类别 1 时,我会在“注释”视图中看到注释 1.1。问题是当我想将类别 2 拖到 Note 1.1 上时,“类别”视图选择类别 2,我不能再将类别放在 Note 1.1 上,因为现在“注释”视图仅显示 Note 2.1

4

1 回答 1

0

当您想开始拖动时,我认为您无法阻止类别视图获得焦点和触发选择更改。这只是控件的自然行为。可能有一些非常规的方法来延迟选择触发,但它们可能无法完美运行。

但是,为了解决您的问题,我建议配置您的拖放支持,这样当您开始拖动“类别 2”(并因此更改选择)时,您首先必须将鼠标悬停在“类别 1”上(应重新选择“类别 1” ) 并且它将允许您在“Note 1.1”上删除“Category 2”。

这意味着您还可以为类别查看器添加拖放支持,并在DropTargetListener#dragOver(DropTargetEvent)您将选择设置为鼠标悬停的类别。这应该开始显示您的正确注释,以便您可以将拖动的类别放在它上面。

于 2013-02-20T06:36:41.647 回答