阅读:966回复:3
[求助]择事件发生时,得到选择图元
<P>vb+arcEngine在mapcontrol中,当选择事件发生时,得到选择图元</P>
<P>如何得到图元所在的图层</P> <P>代码如下:</P> <P>Dim pmap As IMap<br> Set pmap = MapControl1.Map<br> Dim pEnumFeature As IEnumFeature<br> Dim pObjectClass As IObjectClass<br> Dim pFeatureClass As FeatureClass<br> ' pEnumFeature.Reset<br> Set pEnumFeature = pmap.FeatureSelection<br> Dim pFeature As IFeature<br> pEnumFeature.Reset<br> Set pFeature = pEnumFeature.Next</P> <P> If Not pFeature Is Nothing Then</P> <P> Set pObjectClass = pFeature.Class<br> Set pFeatureClass = pObjectClass<br> Dim pFeatureLayer As IFeatureLayer<br> <br> Set pFeature = pEnumFeature.Next<br> End If<br> MapControl1.ActiveView.Refresh</P> <P> pFeatureClass 的属性为空,请各位高手帮忙,谢谢!! </P> |
|
1楼#
发布于:2005-09-08 10:54
<P>Set pObjectClass = pFeature.Class<BR>Set pFeatureClass = pObjectClass</P>
<P>没人会这么写吧</P> <P>不知道为什么用Set pEnumFeature = pmap.FeatureSelection</P> <P>我觉得应该</P> <P>dim pFeatureSelection as IFeatureSelection</P> <P>set pFeatureSelection=pFeatureLayer</P> <P>Set pEnumFeature=pFeatureSelection</P> |
|
|
2楼#
发布于:2005-09-08 11:23
<P>Set pEnumFeature = pmap.FeatureSelection 必须这样写</P>
<P>否则,抱错,</P> <P> Dim pFeatureSelection As IFeatureSelection<BR> ‘Dim pFeatureLayer As IFeatureLayer<BR> ' pEnumFeature.Reset<BR> Set pFeatureSelection = pmap.FeatureSelection</P> <P>也不对</P> <P>欢迎各位高手指点</P> |
|
3楼#
发布于:2005-09-08 14:02
抱歉
<P>Set pEnumFeature=pFeatureSelection是不对。</P> <P>Set pEnumFeature = pmap.FeatureSelection 必须这样写????</P> <P>也不是必须吧,不是必须走你这条路吧。</P> <P> Set pEnumLayer = pMap.Layers</P> <P> pEnumLayer.Reset<BR> Set pFeatureLayer = pEnumLayer.Next<BR> Do While Not pFeatureLayer Is Nothing<BR> 'Loop through the selected features per layer<BR> Set pFeatureSelection = pFeatureLayer 'QI<BR> Set pSelectionSet = pFeatureSelection.SelectionSet<BR> 'Can use Nothing keyword if you don't want to draw them,<BR> 'otherwise, the spatial reference might not match the Map's<BR> pSelectionSet.Search Nothing, False, pFeatureCursor<BR> Set pFeature = pFeatureCursor.NextFeature<BR> Do While Not pFeature Is Nothing<BR> 'Do something with the feature<BR> <BR> Set pFeature = pFeatureCursor.NextFeature<BR> Loop<BR> Set pFeatureLayer = pEnumLayer.Next<BR> Loop<BR></P> |
|
|