4

I am creating a dockable window that allows users to select features of a particular featureclass, iterate through records in the featureclass, populate textboxes with certain attributes, and edit existing records. I am trying to keep everything within the scope of edit session.

A problem I am having is listening to editor events (edit session start/stop, selection change). I've wired up the event handlers in the Load event of the Dockable Window (DockWin) using the code below (Disclaimer, I'm an ArcObjects beginner):

Dim m_Editor As IEditor3
Dim m_EditEvents As IEditEvents_Event

Public Sub New(ByVal hook As Object)

    ' This call is required by the Windows Form Designer.
    InitializeComponent()
    ' Add any initialization after the InitializeComponent() call.
    Me.Hook = hook

    '--Get the editor extension.
    Dim editorUID As UID
    editorUID = New UID
    editorUID.Value = "esriEditor.Editor"
    m_Editor = (My.ArcMap.Application.FindExtensionByCLSID(editorUID))

End Sub    
Private Sub DockWin_Load(sender As Object, e As System.EventArgs) Handles Me.Load
    m_EditEvents = CType(m_Editor, IEditEvents_Event)
    AddHandler m_EditEvents.OnSelectionChanged, AddressOf OnSelectionChanged_Handler
    AddHandler m_EditEvents.OnStartEditing, AddressOf OnStartEditing_Handler
    AddHandler m_EditEvents.OnStopEditing, AddressOf OnStopEditing_Handler
End Sub

Private Sub OnSelectionChanged_Handler()
    MessageBox.Show("Selection Changed")
End Sub

Private Sub OnStartEditing_Handler()
    MessageBox.Show("Editing Started")
End Sub

Private Sub OnStopEditing_Handler()
    MessageBox.Show("Editing Stopped")
End Sub

None of my MessageBoxes pop up, telling me it's not wired correctly. Is there anything apparently wrong with my approach? Or is there another more suitable one?

I've see that there are numerous types of selections in ArcObjects. Perhaps another is more suitable?

I've seen where others have had problems with IActiveViewEvents and dockable windows, here and here, so I wonder if anyone has experience with IEditEvents and dockable windows.

1

The solution to this problem was to add an extension, and in this case an Editor Extension, and then place the event listeners within the extension. The extension and dockable window are then allowed to communicate with each other, depending on the task at hand.

A good example of this approach can be found here.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.