2013-06-04 45 views
1

我有一个最初为Petrel 2011编写的插件。最近,我们需要在Petrel 2012中使用这个插件。我已经将调试器连接到Petrel和证实该插件正在被加载,并且模块上的Initialize()被调用。这只是简单地向DataManager.DataSourceManager.Saved事件添加事件处理程序。DataManager.DataSourceManager.Saved事件似乎并没有为Petrel 2012.1保存

随着Petrel 2011,此事件在保存过程结束时被触发。然而,到2012年,这个事件似乎不再被解雇。

是否有一个新事件我应该用于2012年检测项目正在保存?最好是有2011年

回答

2

OK兼容,我找到了答案,这在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... 
} 
+1

那这个问题......我必须做同样的事情时,2012就出来了。 – Web

+0

我有点落伍了,我想 –

+0

至少你在文档中找到它。我从来没有发现它,并在我的头靠在墙上,问为什么我的2012年版本被打破,但我的2011年工作正常,我最终在相同的解决方案。 – Web