Engine撤销画点画线
IFeatureLayer pFeatlayer = bf.GetLayerByName(axMapControl,str_Drawing);
IFeatureClass pFeatCls = pFeatlayer.FeatureClass;
IFeatureClassWrite fr = (IFeatureClassWrite)pFeatCls;
m_EngineEditor.EditSessionMode = esriEngineEditSessionMode.esriEngineEditSessionModeNonVersioned;
m_EngineEditor.StartEditing((pFeatCls as IDataset).Workspace,axMapControl.Map);
((IEngineEditLayers)m_EngineEditor).SetTargetLayer(pFeatlayer, 0);
//m_EngineEditor.StartOperation();
IFeature f;//定义一个IFeature实例,用于添加到当前图层上
ESRI.ArcGIS.Geometry.IPoint p;//定义一个点,用来作为IFeature实例的形状属性,即shape属性
//下面是设置点的坐标和参考系
p = new ESRI.ArcGIS.Geometry.PointClass();
p.SpatialReference = axMapControl1.SpatialReference;
p.X = e.mapX;
p.Y = e.mapY;
//将IPoint设置为IFeature的shape属性时,需要通过中间接口IGeometry转换
ESRI.ArcGIS.Geometry.IGeometry peo;
peo = p;
f = pFeatCls.CreateFeature();//实例化IFeature对象, 这样IFeature对象就具有当前图层上要素的字段信息
f.Shape = peo;//设置IFeature对象的形状属性
//f.set_Value(3, "house1");//设置IFeature对象的索引是3的字段值
f.Store();//保存IFeature对象
fr.WriteFeature(f);//将IFeature对象,添加到当前图层上
axMapControl1.Refresh();//刷新地图
注:以上代码是在图层中添加一个点要素
IEngineEditProperties ep = new EngineEditorClass();
ILayer m_pCurrentLayer = ep.TargetLayer;
if (m_pCurrentLayer == null) return;
IFeatureLayer pFeatureLayer = (IFeatureLayer)m_pCurrentLayer;
IDataset pDataset = (IDataset)pFeatureLayer.FeatureClass;
if (pDataset == null) return;
IWorkspaceEdit pWorkspaceEdit = (IWorkspaceEdit)pDataset.Workspace;
bool bHasUndos = false;
pWorkspaceEdit.HasUndos(ref bHasUndos);
if (bHasUndos)
pWorkspaceEdit.UndoEditOperation();
axMapControl1.ActiveView.Refresh();
注:以上代码是撤销刚刚在图层里添加的一个点要素
问题:pWorkspaceEdit.HasUndos(ref bHasUndos)获取不到可以撤销的HasUndos状态,HasUndos始终为false
IFeatureClass pFeatCls = pFeatlayer.FeatureClass;
IFeatureClassWrite fr = (IFeatureClassWrite)pFeatCls;
m_EngineEditor.EditSessionMode = esriEngineEditSessionMode.esriEngineEditSessionModeNonVersioned;
m_EngineEditor.StartEditing((pFeatCls as IDataset).Workspace,axMapControl.Map);
((IEngineEditLayers)m_EngineEditor).SetTargetLayer(pFeatlayer, 0);
//m_EngineEditor.StartOperation();
IFeature f;//定义一个IFeature实例,用于添加到当前图层上
ESRI.ArcGIS.Geometry.IPoint p;//定义一个点,用来作为IFeature实例的形状属性,即shape属性
//下面是设置点的坐标和参考系
p = new ESRI.ArcGIS.Geometry.PointClass();
p.SpatialReference = axMapControl1.SpatialReference;
p.X = e.mapX;
p.Y = e.mapY;
//将IPoint设置为IFeature的shape属性时,需要通过中间接口IGeometry转换
ESRI.ArcGIS.Geometry.IGeometry peo;
peo = p;
f = pFeatCls.CreateFeature();//实例化IFeature对象, 这样IFeature对象就具有当前图层上要素的字段信息
f.Shape = peo;//设置IFeature对象的形状属性
//f.set_Value(3, "house1");//设置IFeature对象的索引是3的字段值
f.Store();//保存IFeature对象
fr.WriteFeature(f);//将IFeature对象,添加到当前图层上
axMapControl1.Refresh();//刷新地图
注:以上代码是在图层中添加一个点要素
IEngineEditProperties ep = new EngineEditorClass();
ILayer m_pCurrentLayer = ep.TargetLayer;
if (m_pCurrentLayer == null) return;
IFeatureLayer pFeatureLayer = (IFeatureLayer)m_pCurrentLayer;
IDataset pDataset = (IDataset)pFeatureLayer.FeatureClass;
if (pDataset == null) return;
IWorkspaceEdit pWorkspaceEdit = (IWorkspaceEdit)pDataset.Workspace;
bool bHasUndos = false;
pWorkspaceEdit.HasUndos(ref bHasUndos);
if (bHasUndos)
pWorkspaceEdit.UndoEditOperation();
axMapControl1.ActiveView.Refresh();
注:以上代码是撤销刚刚在图层里添加的一个点要素
问题:pWorkspaceEdit.HasUndos(ref bHasUndos)获取不到可以撤销的HasUndos状态,HasUndos始终为false
2 个回复
朱新颖
赞同来自: 凯_820
why小飞
赞同来自:
要回复问题请先登录或注册
发起人
相关问题
问题状态