AE+C#通过名称来删除要素类
2012-07-26 17:14
309 查看
//注: 在程序运行中往往有些要素类因为出错而无法删除,这时IDataset.Delete这个方法则无法成功,可以用轻量级的名称对象来完成这个任务。以下为C#+AE10源码。 //删除要素类 public static bool DeleteFeatureDataset(IWorkspace ws, string name) { if (ws == null || string.IsNullOrEmpty(name)) { ErrMsg = "工作空间或要素类名称不能为空!"; return false; } IFeatureDataset pFeaDataSet; IEnumDatasetName pEnumDatasetName; IFeatureWorkspace pFeaWorkspace; IDatasetName pDatasetName; try { pFeaWorkspace = ws as IFeatureWorkspace; pEnumDatasetName = ws.get_DatasetNames(esriDatasetType.esriDTFeatureClass ^ esriDatasetType.esriDTFeatureDataset); pEnumDatasetName.Reset(); pDatasetName = pEnumDatasetName.Next(); while (pDatasetName != null) { if (pDatasetName.Type == esriDatasetType.esriDTFeatureDataset) { //如果是要素集,则对要素集内的要素类进行查找 IEnumDatasetName pEnumFcName = (pDatasetName as IFeatureDatasetName).FeatureClassNames; IDatasetName pFcName = pEnumFcName.Next(); while (pFcName != null) { if (pFcName.Name.IndexOf(name) >= 0) { DeleteByName(pFeaWorkspace, pFcName); return true; } pFcName = pEnumFcName.Next(); } } else { if (pDatasetName.Name.IndexOf(name) >= 0) { DeleteByName(pFeaWorkspace, pDatasetName); return true; } } pDatasetName = pEnumDatasetName.Next(); } return false; } catch (Exception ex) { ErrMsg = ex.Message; return false; } } //删除名称对象 public static void DeleteByName(IFeatureWorkspace pFeaWorkspace, IDatasetName pDatasetName) { IFeatureWorkspaceManage pWorkspaceManager = pFeaWorkspace as IFeatureWorkspaceManage; pWorkspaceManager.DeleteByName(pDatasetName); }
相关文章推荐
- AE+C#通过名称来删除要素类
- AE+C#通过名称来删除要素类
- AE+C#通过名称来删除要素类
- AE+C#通过名称来删除要素类(转)
- [转]C#(VB.NET)操作Windows自带的防火墙 之 添加/删除允许通过防火墙的例外程序
- C#中通过反射方法获取控件类型和名称
- C#通过属性名称获取(读取)属性值的方法
- C#通过FTP账号上传、修改、删除文件 FTPClient
- C# 通过传入节点name及节点value,来删除XML相应节点
- C#通过属性名称获取(读取)属性值的方法 z
- C#通过Expression获取指定属性的名称
- 通过进程名称删除进程 ps -ef
- c# 通过经纬度查询 具体的地址和区域名称
- c# 通过控件名称获取控件
- C# 通过拼音检索中文名称
- AE C# 图片和文本标注(通过查询)
- C#通过属性名称获取(读取)属性值的方法
- C#通过属性名称获取(读取)属性值的方法
- AE+C#通过多线程向GlobeControl中增加图层
- C#(VB.NET)操作Windows自带的防火墙 之 添加/删除允许通过防火墙的例外程序