This document is archived and information here might be outdated.  Recommended version.


Get Index Number from Layer Name Snippet (ArcObjects .NET 10.5 SDK)
ArcObjects Library Reference

Get Index Number from Layer Name Snippet

Get the index number for the specified layer name.

[C#]
///<summary>Get the index number for the specified layer name.</summary>
/// 
///<param name="activeView">An IActiveView interface</param>
///<param name="layerName">A System.String that is the layer name in the active view. Example: "states"</param>
///  
///<returns>A System.Int32 representing a layer number</returns>
///  
///<remarks>Return values of 0 and greater are valid layers. A return value of -1 means the layer name was not found.</remarks>
public System.Int32 GetIndexNumberFromLayerName(ESRI.ArcGIS.Carto.IActiveView activeView, System.String layerName)
{
  if(activeView == null || layerName == null)
  {
    return -1;
  }
  ESRI.ArcGIS.Carto.IMap map=activeView.FocusMap; 

  // Get the number of layers
  int numberOfLayers=map.LayerCount;

  // Loop through the layers and get the correct layer index
  for (System.Int32 i=0; i < numberOfLayers; i++)
  {
    if (layerName == map.get_Layer(i).Name)
    {

      // Layer was found
      return i;
    }
  }

  // No layer was found
  return -1;
}
[Visual Basic .NET]
'''<summary>Get the index number for the specified layer name.</summary>
''' 
'''<param name="activeView">An IActiveView interface</param>
'''<param name="layerName">A System.String that is the layer name in the active view. Example: "states"</param>
'''  
'''<returns>A System.Int32 representing a layer number</returns>
'''  
'''<remarks>Return values of 0 and greater are valid layers. A return value of -1 means the layer name was not found.</remarks>
Public Function GetIndexNumberFromLayerName(ByVal activeView As ESRI.ArcGIS.Carto.IActiveView, ByVal layerName As System.String) As System.Int32

  If activeView Is Nothing OrElse layerName Is Nothing Then
    Return -1
  End If

  Dim map As ESRI.ArcGIS.Carto.IMap=activeView.FocusMap

  ' Get the number of layers
  Dim numberOfLayers As System.Int32=map.LayerCount

  ' Loop through the layers and get the correct layer index
  Dim i As System.Int32=0

  Do While i < numberOfLayers

    If layerName=map.Layer(i).Name Then
      
      ' Layer was found
      Return i
    End If
    
    i += 1

  Loop

  ' No layer was found
  Return -1

End Function

Additional Requirements
  • The code in this document requires the following References added to the Visual Studio project:
  • ESRI.ArcGIS.Carto