对于Petrel 2012.1,似乎没有触发DataManager.DataSourceManager.Saved事件

时间:2013-06-04 11:17:36

标签: ocean

我有一个最初为Petrel 2011编写的插件。最近,我们需要在Petrel 2012上使用它。我已经将调试器连接到Petrel并确认插件正在加载并且模块上的Initialize()正在调用。这只是向DataManager.DataSourceManager.Saved事件添加一个事件处理程序。

使用Petrel 2011,此事件将在保存过程结束时触发。然而,在2012年,这一事件似乎不再被解雇。

我是否应该在2012年使用新事件来检测项目何时被保存?最好与2011年兼容。

1 个答案:

答案 0 :(得分:2)

好的,我在2012年发行说明中找到了答案,附录A:

“每次创建一个新工作区时(创建一个新项目或加载一个项目时),它都需要自己的DataSourceManager。因此,缓存DataSourceManager显然不再起作用了,并且应该对DataSourceManager.Saved事件进行描述。每次打开项目时。最好的地方是在DataManager.WorkspaceEvent.Opened事件处理程序中。“

对我有用的解决方案是:

public void Initialize()
{
    DataManager.WorkspaceOpened += ProjectOpened;
}

private void ProjectOpened(object sender, EventArgs e)
{
    DataManager.DataSourceManager.Saved += DataSourceManagerSaved;
}

private void DataSourceManagerSaved(object sender, EventArgs e)
{
    whatever needs doing on save...
}