本帖最后由 zhenggary 于 2012-11-29 09:42:41 编辑

解决方案 »

  1.   

    首先 :开始编辑前 要启动编辑 (如arcmap)StartEdit() 结束编辑后 调用 StopEdit()
    字段赋值 使用  pTarFeatureBuffer.set_Value(int 字段索,引object 字段值 )        private static bool StartEdit(IFeatureClass trgFC)
            {
                IDataset pDataset = (IDataset)trgFC;
                IWorkspace pWorkspace = pDataset.Workspace;            if (pWorkspace == null) return false;            IFeatureWorkspace pFeatureWorkspace = pWorkspace as IFeatureWorkspace;
                IWorkspaceEdit pWE = pFeatureWorkspace as IWorkspaceEdit;
                if (!pWE.IsBeingEdited())
                {
                    IVersionedObject pVersioned = pDataset as IVersionedObject;                if (pVersioned == null || !pVersioned.IsRegisteredAsVersioned)
                    {
                        IMultiuserWorkspaceEdit pMulti = pFeatureWorkspace as IMultiuserWorkspaceEdit;
                        if (pMulti != null)
                        {
                            if (pMulti.SupportsMultiuserEditSessionMode(esriMultiuserEditSessionMode.esriMESMNonVersioned))
                            {
                                try
                                {
                                    pMulti.StartMultiuserEditing(esriMultiuserEditSessionMode.esriMESMNonVersioned);
                                }
                                catch (Exception)
                                {
                                    pWE.StartEditing(false);
                                }
                            }
                            else
                            {
                                pWE.StartEditing(false);
                            }
                        }
                        else
                        {
                            pWE.StartEditing(false);
                        }
                    }
                    else
                    {
                        pWE.StartEditing(false);
                    }                if (pWE.IsBeingEdited() == false) return false;
                } 
                pWE.StartEditOperation();
                return true;
            }        private static void StopEdit(IFeatureClass trgFC, bool isSave)
            {
                IDataset pDataset = (IDataset)trgFC;
                IWorkspace pWorkspace = pDataset.Workspace;
                if (pWorkspace == null) return;
                IWorkspaceEdit pWE = null;
                IFeatureWorkspace pFeatureWorkspace = pWorkspace as IFeatureWorkspace;
                pWE = pFeatureWorkspace as IWorkspaceEdit;
                if (pWE.IsBeingEdited())
                {
                    pWE.StopEditOperation();
                    pWE.StopEditing(isSave); //保存慢呀!
                }
            }
      

  2.   

    追加说明:
    我提供的代码会生成三个文件(.dbf, .shx, .shp)。同样的代码逻辑,几年以前是VB6+ArcGIS9.2,插入的汉字和字母等都可以正常显示在.dbf属性文件里,现在升级到C#+ArcGIS10.0后,字母可以正常显示,汉字却不能显示了。
    请各位高手结合我的代码,给诊断病情。等待各位高手出诊
      

  3.   

    问题搞定:ArcGIS10.0中装上ArcGIS Engine Runtime,在Form上,拖放一个Licence控件即可。太邪门了,不知为何阿,反正搞定了。