PublicSub DeleteFeature()Sub DeleteFeature(pFeaWorkspace As IFeatureWorkspace, pfeatName AsString) 'Delete feature class Dim pFeatureClass As IFeatureClass Set pFeatureClass = pFeaWorkspace.OpenFeatureClass(pfeatName) OnErrorResumeNext If pFeatureClass IsNothingThen Exit Sub EndIf Dim pTable As ITable Set pTable = pFeatureClass pTable.DeleteSearchedRows Nothing End Sub
PublicSub DeleteAnnoFeature()Sub DeleteAnnoFeature(pFeaWorkspace As IFeatureWorkspace, pfeatName AsString) 'Delete feature class Dim pFeatureClass As IFeatureClass Set pFeatureClass = pFeaWorkspace.OpenFeatureClass(pfeatName) OnErrorResumeNext If pFeatureClass IsNothingThen Exit Sub EndIf Dim pDeleteSet As esriSystem.ISet Set pDeleteSet =New esriSystem.Set Dim pFeature As IFeature Dim pFeatureCursor As IFeatureCursor Set pFeatureCursor = pFeatureClass.Search(Nothing, False) Set pFeature = pFeatureCursor.NextFeature DoWhileNot pFeature IsNothing pDeleteSet.Add pFeature Set pFeature = pFeatureCursor.NextFeature Loop pDeleteSet.Reset Dim pFeatureEdit As IFeatureEdit Set pFeatureEdit = pDeleteSet.Next DoWhileNot pFeatureEdit IsNothing pFeatureEdit.DeleteSet pDeleteSet Set pFeatureEdit = pDeleteSet.Next Loop End Sub
3. 批量刪除要素的一般方法.
PublicSub DeleteAnnoFeature()Sub DeleteAnnoFeature()Sub DeleteAnnoFeature()Sub DeleteAnnoFeature(pFeaWorkspace As IFeatureWorkspace, pfeatName AsString) 'Delete feature class Dim pFeatureClass As IFeatureClass Set pFeatureClass = pFeaWorkspace.OpenFeatureClass(pfeatName) OnErrorResumeNext If pFeatureClass IsNothingThen Exit Sub EndIf Dim pFeature As IFeature Dim pFeatureCursor As IFeatureCursor Set pFeatureCursor = pFeatureClass.Search(Nothing, False) Set pFeature = pFeatureCursor.NextFeature DoWhileNot pFeature IsNothing pFeature.delete Set pFeature = pFeatureCursor.NextFeature Loop set pFeatureClass=nothing End Sub
PublicSub DeleteSelectedFeatures()Sub DeleteSelectedFeatures() Dim pDeleteSet As ISet Dim pEditLayers As IEditLayers Dim pEditor As IEditor Dim pEnumLayer As IEnumLayer Dim pFeature As IFeature Dim pFeatureEdit As IFeatureEdit Dim pFeatureCursor As IFeatureCursor Dim pFeatureLayer As IFeatureLayer Dim pFeatureSelection As IFeatureSelection Dim pID AsNew UID Dim pInvalidArea As IInvalidArea Dim pSelectionSet As ISelectionSet Dim bInOperation AsBoolean Dim DeletedFeatureCount AsInteger Dim LayerCount AsInteger OnErrorGoTo ErrorHandler ''Get a handle to the Editor extension pID ="esriEditor.Editor" Set pEditor = Application.FindExtensionByCLSID(pID) IfNot pEditor.EditState = esriStateEditing ThenExit Sub Set pEditLayers = pEditor If pEditor.SelectionCount =0ThenExit Sub 'Set up the InvalidArea object Set pInvalidArea =New InvalidArea Set pInvalidArea.Display = pEditor.Display 'Loop through the selected features and delete them pEditor.StartOperation bInOperation =True pID ="{40A9E885-5533-11D0-98BE-00805F7CED21}"'IGeoFeatureLayer Set pEnumLayer = pEditor.Map.Layers(pID, True) pEnumLayer.Reset Set pFeatureLayer = pEnumLayer.Next DoWhileNot pFeatureLayer IsNothing 'Check if feature layer is editable If pEditLayers.IsEditable(pFeatureLayer) Then Set pFeatureSelection = pFeatureLayer Set pSelectionSet = pFeatureSelection.SelectionSet ''Check if there is a selection IfNot pSelectionSet.Count =0Then 'Add each feature to a Set 'and delete the set - need a Set incase there are related features Set pDeleteSet =New esriSystem.Set pSelectionSet.Search Nothing, False, pFeatureCursor Set pFeature = pFeatureCursor.NextFeature DoWhileNot pFeature IsNothing pInvalidArea.Add pFeature pDeleteSet.Add pFeature DeletedFeatureCount = DeletedFeatureCount +1 Set pFeature = pFeatureCursor.NextFeature Loop pDeleteSet.Reset Set pFeatureEdit = pDeleteSet.Next DoWhileNot pFeatureEdit IsNothing pFeatureEdit.DeleteSet pDeleteSet Set pFeatureEdit = pDeleteSet.Next Loop EndIf EndIf Set pFeatureLayer = pEnumLayer.Next Loop If DeletedFeatureCount =0Then pEditor.AbortOperation Else pEditor.StopOperation ("Delete") bInOperation =False EndIf 'Clear the selection and refresh the display pEditor.Map.ClearSelection pInvalidArea.Invalidate esriAllScreenCaches Exit Sub ErrorHandler: If bInOperation Then pEditor.AbortOperation EndIf End Sub 来自:http://www.cnblogs.com/iswszheng/archive/2009/03/18/1415475.html