Esempio n. 1
0
 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, "开始编辑");
            }
        }