首页 新闻 会员 周边

关于AE9.3.1在一个窗体同时加载mapControl和PageLayoutControl数据,保存时发生冲突如何处理

0
悬赏园豆:5 [待解决问题]

各位老师好,我使用c#和AE9.3.1做了一个地图桌面窗体,在窗体中我同时添加了axMapControl和axPageLayoutControl控件,实现了同时加载地图数据并可以联动,但当我保存时,却被告知“发生共享冲突”,这个如何处理?请高手指导一下,谢谢!

问题补充:

但问题还有一点,当用Engine和Desktop同时打开一个文档时,Desktop(Arcmap)是可以保存文档的,而Engine保存时就会显示发生共享冲突;再同时打开两个Desktop(Arcmap),然后都打开同一个文档,结果只有第一次打开的Desktop(Arcmap)能保存,第二次打开的不能保存。这又是什么原因呢?如果是以独占方式打开,是否可以在Engine里设置呢?

fenggengfei的主页 fenggengfei | 初学一级 | 园豆:191
提问于:2014-09-13 11:45
< >
分享
所有回答(2)
0

mark.

Firen | 园豆:5385 (大侠五级) | 2014-09-14 17:43

您好,能说的具体点吗,谢谢

支持(0) 反对(0) fenggengfei | 园豆:191 (初学一级) | 2014-09-14 17:54

@fenggengfei: 我也不懂,所以关注下这个问题。有人回答的话,我也能学习下。

支持(0) 反对(0) Firen | 园豆:5385 (大侠五级) | 2014-09-15 07:23
0

我的问题已解决,其实并不冲突,只是我在操作时,同时用ArcGIS Desktop也打开了这个文档,所以保存时发生冲突,只要不同时打开同一个文档,保存是可以的。代码如下:

private void menuSaveDoc_Click(object sender, EventArgs e)
{
try
{
//execute Save Document command
if (m_mapControl.CheckMxFile(m_mapDocumentName))
{
//create a new instance of a MapDocument
IMapDocument mapDoc = new MapDocumentClass();
mapDoc.Open(m_mapDocumentName, string.Empty);

//Make sure that the MapDocument is not readonly
if (mapDoc.get_IsReadOnly(m_mapDocumentName))
{
MessageBox.Show("Map document is read only!");
mapDoc.Close();
return;
}

//Replace its contents with the current map
//mapDoc.ReplaceContents((IMxdContents)m_mapControl.Map);
mapDoc.ReplaceContents((IMxdContents)m_pageLayout.PageLayout);

//save the MapDocument in order to persist it
mapDoc.Save(mapDoc.UsesRelativePaths, false);

//close the MapDocument
mapDoc.Close();
}
}
catch (Exception ex)
{ MessageBox.Show(ex.Message); }
}

fenggengfei | 园豆:191 (初学一级) | 2014-09-17 10:36

但问题还有一点,当用Engine和Desktop同时打开一个文档时,Desktop(Arcmap)是可以保存文档的,而Engine保存时就会显示发生共享冲突;再同时打开两个Desktop(Arcmap),然后都打开同一个文档,结果只有第一次打开的Desktop(Arcmap)能保存,第二次打开的不能保存。这又是什么原因呢?如果是以独占方式打开,是否可以在Engine里设置呢?

支持(0) 反对(0) fenggengfei | 园豆:191 (初学一级) | 2014-09-18 11:17
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册