我正在尝试在 VB.Net 中为 arcmap 创建一个自定义工具。但是我在将 FeatureCursor 传递给 ISelectionSet 的 Search() 方法时遇到了问题。
这是我的代码的一部分:
Dim pSelSet As ISelectionSet = provFSel.SelectionSet
Dim provCursor As IFeatureCursor
pSelSet.Search(spatialFilter, True, provCursor)
Dim provFeature As IFeature = provCursor.NextFeature
在 Search() 内的 provCursor 下出现一个蓝色波浪线,表示“变量 'provCursor' 在被赋值之前通过引用传递。运行时可能导致空引用异常。” 我试过了
Dim provCursor As IFeatureCursor = New FeatureCursor
但是 New FeatureCursor 下的曲线显示“'ESRI.ArcGIS.Geodatabase.FeatureCursorClass.Friend Sub New()' 在此上下文中不可访问,因为它是 'Friend'。”。我也试过
Dim provCursor As IFeatureCursor = Nothing
但没有成功。
在我所有的调试尝试中,Arcmap 都因以下错误而崩溃:Microsoft.VisualBasic.dll 中发生了“System.NullReferenceException”类型的第一次机会异常
有人可以帮我弄清楚我的代码有什么问题吗?我真的很感激任何帮助。
-斯皮尔曼
我实际上不确定上述代码或之前的代码中是否发生错误。因此,我发布了整个子程序内容:
Dim pPoint As IPoint = pMxDoc.CurrentLocation
Dim provFSel As IFeatureSelection = provinceLayer
Dim pGeom As IGeometry = pPoint.Shape
Dim spatialFilter As ISpatialFilter = New SpatialFilter
With spatialFilter
.Geometry = pGeom
.SpatialRel = esriSpatialRelEnum.esriSpatialRelWithin
End With
Dim pSelSet As ISelectionSet = provFSel.SelectionSet
Dim provCursor As IFeatureCursor
pSelSet.Search(spatialFilter, True, provCursor)
Dim provFeature As IFeature = provCursor.NextFeature