本来根本没有写这个工具的意思,自己一直用的Ae自带的工具。虽然可控制力弱了一些,但终究还是凑或能用。一天,问到一个同学,想请教一下,居然以百般理由回绝。算了,秉承毛老人家的口号:自力更生,丰衣足食!好了,闲话少说,各位看官,咱步入正题了。
首先,说一下,所有的要素的更新、插入、删除最好放在编辑的Session 里面,即以一对StartEditing和StopEditing包裹。
一开始我的疑问在于,为什么我用IWorkspaceEdit的StartEditing方法后,怎么鼠标不会变成AcrMap里面Editor的开始编辑那样呢,为什么不能选中要素,为什么不能双击后编辑要素?原来,选中要素和使要素处于编辑状态还是要自己写的。
那我们就按照逻辑顺序来一一展示这个到底是怎么做的。首先是,开始和结束编辑的代码:
/// <summary>
/// 开始编辑
/// </summary>
/// <param name="bWithUndoRedo"></param>
public void StartEditing(bool bWithUndoRedo)
{
if (m_SelectedLayer == null) return;
IFeatureLayer featureLayer = m_SelectedLayer as IFeatureLayer;
if (featureLayer == null) return;
IFeatureClass featureClass = featureLayer.FeatureClass;
if (featureClass == null) return;
IDataset dataset = featureClass as IDataset;
IWorkspaceEdit workspaceEdit = dataset.Workspace as IWorksp