About the Edit event listener Sample
[C#]
EditorEventsDialog.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using ESRI.ArcGIS.esriSystem;
using ESRI.ArcGIS.SystemUI;
using ESRI.ArcGIS.Framework;
using ESRI.ArcGIS.ADF;
namespace Events
{
/// <summary>
/// Designer class of the dockable window add-in. It contains user interfaces that
/// make up the dockable window.
/// </summary>
public partial class EditorEventsDialog : UserControl
{
internal TabPage m_selectTab;
internal TabPage m_listenTab;
internal TabControl m_TabControl;
internal static EditorEventsDialog e_dockWinForm;
EventListener eventListener;
private ESRI.ArcGIS.Editor.IEditor m_editor;
public EditorEventsDialog(object hook)
{
InitializeComponent();
this.Hook = hook;
e_dockWinForm = this;
//get a reference to the editor
UID uid = new UIDClass();
uid.Value = "esriEditor.Editor";
m_editor = ArcMap.Application.FindExtensionByCLSID(uid) as ESRI.ArcGIS.Editor.IEditor;
m_TabControl = e_dockWinForm.tabControl1;
System.Collections.IEnumerator e = m_TabControl.TabPages.GetEnumerator();
e.MoveNext();
m_listenTab = e.Current as TabPage;
e.MoveNext();
m_selectTab = e.Current as TabPage;
CheckedListBox editEventList = m_selectTab.GetNextControl(m_selectTab, true) as CheckedListBox;
editEventList.ItemCheck += new ItemCheckEventHandler(editEventList_ItemCheck);
ListBox listEvent = m_listenTab.GetNextControl(m_listenTab, true) as ListBox;
listEvent.MouseDown += new MouseEventHandler(listEvent_MouseDown);
eventListener = new EventListener(m_editor);
eventListener.Changed += new ChangedEventHandler(eventListener_Changed);
//populate the editor events
editEventList.Items.AddRange(Enum.GetNames(typeof(EventListener.EditorEvent)));
}
/// <summary>
/// Host object of the dockable window
/// </summary>
private object Hook
{
get;
set;
}
/// <summary>
/// Implementation class of the dockable window add-in. It is responsible for
/// creating and disposing the user interface class of the dockable window.
/// </summary>
public class AddinImpl : ESRI.ArcGIS.Desktop.AddIns.DockableWindow
{
private EditorEventsDialog m_windowUI;
public AddinImpl()
{
}
protected override IntPtr OnCreateChild()
{
m_windowUI = new EditorEventsDialog(this.Hook);
return m_windowUI.Handle;
}
protected override void Dispose(bool disposing)
{
if (m_windowUI != null)
m_windowUI.Dispose(disposing);
base.Dispose(disposing);
}
}
void listEvent_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
this.lstEditorEvents.Items.Clear();
this.lstEditorEvents.Refresh();
}
}
void eventListener_Changed(object sender, EditorEventArgs e)
{
((ListBox)m_listenTab.GetNextControl(m_listenTab, true)).Items.Add(e.eventType.ToString());
}
void editEventList_ItemCheck(object sender, System.Windows.Forms.ItemCheckEventArgs e)
{
// start or stop listening for event based on checked state
eventListener.ListenToEvents((Events.EventListener.EditorEvent)e.Index, e.NewValue == CheckState.Checked);
}
}
}
[Visual Basic .NET]
EditorEventsDialog.vb
Imports System.Runtime.InteropServices
Imports System.Collections.Generic
Imports System.Data
Imports System.Text
Imports ESRI.ArcGIS.esriSystem
Imports ESRI.ArcGIS.SystemUI
Imports ESRI.ArcGIS.Framework
Imports ESRI.ArcGIS.ADF.CATIDs
Imports System.Windows.Forms
''' <summary>
''' Designer class of the dockable window add-in. It contains user interfaces that
''' make up the dockable window.
''' </summary>
Partial Public Class EditorEventsDialog
Friend Shared e_dockWinForm As EditorEventsDialog
Friend m_selectTab As TabPage
Friend m_listenTab As TabPage
Friend tabControl As TabControl
Private eventListener As EventListener
Private m_editor As ESRI.ArcGIS.Editor.IEditor
Private WithEvents editEventList As CheckedListBox
Private WithEvents listEvent As ListBox
Public Sub New(ByVal hook As Object)
' This call is required by the Windows Form Designer.
InitializeComponent()
e_dockWinForm = Me
' Add any initialization after the InitializeComponent() call.
Me.Hook = hook
'Get a reference to the editor.
Dim uidEditor As New UID
uidEditor.Value = "esriEditor.Editor"
m_editor = TryCast(My.ArcMap.Application.FindExtensionByCLSID(uidEditor), ESRI.ArcGIS.Editor.IEditor)
tabControl = e_dockWinForm.tabControl1
Dim e As System.Collections.IEnumerator = tabControl.TabPages.GetEnumerator()
e.MoveNext()
m_listenTab = TryCast(e.Current, TabPage)
e.MoveNext()
m_selectTab = TryCast(e.Current, TabPage)
Dim editEventList As CheckedListBox = TryCast(m_selectTab.GetNextControl(m_selectTab, True), CheckedListBox)
AddHandler editEventList.ItemCheck, AddressOf editEventList_ItemCheck
Dim listEvent As ListBox = TryCast(m_listenTab.GetNextControl(m_listenTab, True), ListBox)
AddHandler listEvent.MouseDown, AddressOf listEvent_MouseDown
eventListener = New EventListener(m_editor)
AddHandler eventListener.Changed, AddressOf eventListener_Changed
'populate the editor events
editEventList.Items.AddRange(System.Enum.GetNames(GetType(EventListener.EditorEvent)))
End Sub
Private m_hook As Object
''' <summary>
''' Host object of the dockable window
''' </summary>
Public Property Hook() As Object
Get
Return m_hook
End Get
Set(ByVal value As Object)
m_hook = value
End Set
End Property
''' <summary>
''' Implementation class of the dockable window add-in. It is responsible for
''' creating and disposing the user interface class for the dockable window.
''' </summary>
Public Class AddinImpl
Inherits ESRI.ArcGIS.Desktop.AddIns.DockableWindow
Private m_windowUI As EditorEventsDialog
Protected Overrides Function OnCreateChild() As System.IntPtr
m_windowUI = New EditorEventsDialog(Me.Hook)
Return m_windowUI.Handle
End Function
Protected Overrides Sub Dispose(ByVal Param As Boolean)
If m_windowUI IsNot Nothing Then
m_windowUI.Dispose(Param)
End If
MyBase.Dispose(Param)
End Sub
End Class
Private Sub editEventList_ItemCheck(ByVal sender As Object, _
ByVal e As ItemCheckEventArgs) Handles editEventList.ItemCheck
' start or stop listening for event based on checked state
eventListener.ListenToEvents(CType(e.Index, EventListener.EditorEvent), e.NewValue = CheckState.Checked)
End Sub
Private Sub listEvent_MouseDown(ByVal sender As Object, ByVal e As MouseEventArgs) Handles listEvent.MouseDown
If e.Button = Windows.Forms.MouseButtons.Right Then
Me.lstEditorEvents.Items.Clear()
Me.lstEditorEvents.Refresh()
End If
End Sub
Private Sub eventListener_Changed(ByVal sender As Object, ByVal e As EditorEventArgs)
CType(m_listenTab.GetNextControl(m_listenTab, True), ListBox).Items.Add(e.eventType.ToString())
End Sub
End Class