IEngineEditor.StartEditing()出现错误的解决办法

IEngineEditor是ArcEngine提供的用于管理编辑的接口,在使用这个接口的时候,笔者遇到了一个问题:

在使用IEngineEditor.StartEditing()这个方法时,总是出现错误.

代码:(引用ArcEngine帮助文档中的一个主题:how to create an edit session中的代码)

privatevoid StartEditing(IMapControl2 m_mapControl)
{
    IMap map = m_mapControl.Map;

    //If an edit session has already been started, exit.if (m_engineEditor.EditState != esriEngineEditState.esriEngineStateNotEditing)
        return ;

    //Start editing the workspace of the first feature layer found.for (int layerCounter = 0; layerCounter <= map.LayerCount - 1; layerCounter++)
    {
        ILayer currentLayer = map.get_Layer(layerCounter);
        if (currentLayer is IFeatureLayer)
        {
            IFeatureLayer featureLayer = currentLayer as IFeatureLayer;
            IDataset dataset = featureLayer.FeatureClass as IDataset;
            IWorkspace workspace = dataset.Workspace;
            m_engineEditor.StartEditing(workspace, map);
            ((IEngineEditLayers)m_engineEditor).SetTargetLayer(featureLayer);
            break;
        }
    }
}

对于红色的语句,笔者使用的是this.axMapControl1.Map;

在从this.axMapControl1.Map获取要素图层currentLayer时,笔者的for语句为:for(int i=0;i<this.axMapControl1.Map.LayerCount;i++);

对于使用了this.axMapControl1.Map,都出现错误。

“System.Runtime.Interopservices.COMException”异常,并说明“对COM组件的调用返回了错误 HRESULT E_FALL.”

笔者在网上找了很多资料,但都行不通

笔者定义了一个IMap全局对象,来替换掉以前使用的this.axMapControl1.Map,结果能正常运行

如果读者遇到此错误,可以采用这种方法去试一下,另外如果打开了ArcMap的话,尽量不要使用你的实验数据,这样也会导致错误的出现

转载于:https://www.cnblogs.com/Robert-Jackson/archive/2011/08/04/2127861.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值