public override void OnClick() { if (this.Enabled) { try { IVersionedObject3 versionedObject = (((IGxSelection)_context.GxSelection).FirstObject as IGxDataset).Dataset as IVersionedObject3; bool flag; bool flag2; versionedObject.GetVersionRegistrationInfo(out flag, out flag2); versionedObject.RegisterAsVersioned(false); if (flag) { versionedObject.UnRegisterAsVersioned3(false); } } catch (Exception ex2) { COMException ex = ex2 as COMException; if (ex != null && ex.ErrorCode == -2147467259) { System.Windows.Forms.MessageBox.Show("表[" + (((IGxSelection)_context.GxSelection).FirstObject as IGxDataset).DatasetName + "]正在使用"); } // CErrorLog.writeErrorLog(this, ex2, ""); } } }
private void button1_Click(object sender, EventArgs e) { pCurrentLyr = this.mapControl4.get_Layer(0) as IFeatureLayer; pDataSet = pCurrentLyr.FeatureClass as IDataset; pWs = pDataSet.Workspace; //设置编辑模式,如果是ArcSDE采用版本模式 if (pWs.Type == esriWorkspaceType.esriRemoteDatabaseWorkspace) { IVersionedObject3 versionedObject = pDataSet as IVersionedObject3; //注册版本 if (versionedObject != null && !versionedObject.IsRegisteredAsVersioned) { versionedObject.RegisterAsVersioned(true); } MapManager.EngineEditor.EditSessionMode = esriEngineEditSessionMode.esriEngineEditSessionModeVersioned; } else { MapManager.EngineEditor.EditSessionMode = esriEngineEditSessionMode.esriEngineEditSessionModeNonVersioned; } //设置编辑任务 ((IEngineEditLayers)MapManager.EngineEditor).SetTargetLayer(pCurrentLyr, 0); MapManager.EngineEditor.StartEditing(pWs, this.mapControl4.ActiveView.FocusMap); MapManager.EngineEditor.EnableUndoRedo(true); pEngineEditTask = MapManager.EngineEditor as IEngineEditTask; pEngineEditTask = MapManager.EngineEditor.GetTaskByUniqueName("ControlToolsEditing_CreateNewFeatureTask"); MapManager.EngineEditor.CurrentTask = pEngineEditTask;// 设置编辑任务 }
//开始编辑 private void btnStart_Click(object sender, EventArgs e) { try { if (pCurrentLyr == null) { MessageBox.Show("请选择编辑图层!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } setEditToolEnable(true); //如果编辑已经开始,则直接退出 if (pEngineEditor.EditState != esriEngineEditState.esriEngineStateNotEditing) { return; } if (pCurrentLyr == null) { return; } //获取当前编辑图层工作空间 pDataSet = pCurrentLyr.FeatureClass as IDataset; pWs = pDataSet.Workspace; pEngineEditTask = pEngineEditor.GetTaskByUniqueName("ControlToolsEditing_CreateNewFeatureTask"); pEngineEditor.CurrentTask = pEngineEditTask; // 设置编辑任务 pEngineEditor.EnableUndoRedo(true); //是否可以进行撤销、恢复操作 //设置编辑模式,如果是ArcSDE采用版本模式 if (pWs.Type == esriWorkspaceType.esriRemoteDatabaseWorkspace) { IVersionedObject3 versionedObject = pDataSet as IVersionedObject3; //注册版本 if (versionedObject != null && !versionedObject.IsRegisteredAsVersioned) { versionedObject.RegisterAsVersioned(true); } pEngineEditor.EditSessionMode = esriEngineEditSessionMode.esriEngineEditSessionModeVersioned; } //else //{ // pEngineEditor.EditSessionMode = esriEngineEditSessionMode.esriEngineEditSessionModeNonVersioned; //} //设置编辑任务 pEngineEditor.StartEditing(pWs, pMap); isEditing = true; //SysLogHelper.WriteOperationLog("数据编辑", "开始编辑", "数据管理"); } catch (Exception ex) { MessageBox.Show(ex.Message); PS.Plot.Common.LogHelper.WriteLog(typeof(Form_Editor), ex, "开始编辑"); } }