About the Custom UI elements using add-ins Sample
[C#]
ZoomToLayerButton.cs
using System; using System.Collections.Generic; using System.Text; using System.IO; using ESRI.ArcGIS.Framework; using ESRI.ArcGIS.ArcMapUI; using ESRI.ArcGIS.esriSystem; using ESRI.ArcGIS.Carto; namespace CustomUIElements { public class ZoomToLayerButton : ESRI.ArcGIS.Desktop.AddIns.Button { public ZoomToLayerButton() { } protected override void OnClick() { ZoomToActiveLayerInTOC(); } protected override void OnUpdate() { this.Enabled = ArcMap.Application != null; } #region "Zoom to Active Layer in TOC" public void ZoomToActiveLayerInTOC() { IMxDocument mxDocument = ArcMap.Application.Document as IMxDocument; IActiveView activeView = mxDocument.ActiveView; // Get the TOC IContentsView IContentsView = mxDocument.CurrentContentsView; // Get the selected layer System.Object selectedItem = IContentsView.SelectedItem; if (!(selectedItem is ILayer)) { return; } ILayer layer = selectedItem as ILayer; // Zoom to the extent of the layer and refresh the map activeView.Extent = layer.AreaOfInterest; activeView.Refresh(); } #endregion } }
[Visual Basic .NET]
ZoomToLayerButton.vb
Imports Microsoft.VisualBasic Imports System Imports System.Collections.Generic Imports System.Text Imports System.IO Imports ESRI.ArcGIS.Framework Imports ESRI.ArcGIS.ArcMapUI Imports ESRI.ArcGIS.esriSystem Imports ESRI.ArcGIS.Geodatabase Imports ESRI.ArcGIS.Carto Namespace CustomUIElements Public Class ZoomToLayerButton Inherits ESRI.ArcGIS.Desktop.AddIns.Button Public Sub New() End Sub Protected Overrides Sub OnClick() ZoomToActiveLayerInTOC(TryCast(My.ArcMap.Application.Document, IMxDocument)) End Sub Protected Overrides Sub OnUpdate() Enabled = My.ArcMap.Application IsNot Nothing End Sub #Region "Zoom to Active Layer in TOC" Public Sub ZoomToActiveLayerInTOC(ByVal mxDocument As IMxDocument) If mxDocument Is Nothing Then Return End If Dim activeView As IActiveView = mxDocument.ActiveView ' Get the TOC Dim IContentsView As IContentsView = mxDocument.CurrentContentsView ' Get the selected layer Dim selectedItem As System.Object = IContentsView.SelectedItem If Not (TypeOf selectedItem Is ILayer) Then Return End If Dim layer As ILayer = TryCast(selectedItem, ILayer) ' Zoom to the extent of the layer and refresh the map activeView.Extent = layer.AreaOfInterest activeView.Refresh() End Sub #End Region End Class End Namespace