4 votos

¿Escuchar eventos de edición a través de una ventana acoplable utilizando ArcObjects?

Estoy creando una ventana acoplable que permite a los usuarios seleccionar características de un featureclass particular, iterar a través de los registros en el featureclass, rellenar cuadros de texto con ciertos atributos, y editar los registros existentes. Estoy tratando de mantener todo dentro del ámbito de la sesión de edición.

Un problema que estoy teniendo es escuchar los eventos del editor (inicio/parada de sesión de edición, cambio de selección). He cableado los controladores de eventos en el evento de carga de la ventana acoplable (DockWin) utilizando el código de abajo (Descargo de responsabilidad, soy un principiante ArcObjects):

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

Ninguno de mis MessageBox aparece, diciéndome que no está conectado correctamente. ¿Hay algo aparentemente erróneo en mi planteamiento? ¿O hay otro más adecuado?

He visto que hay numerosos tipos de selecciones en ArcObjects. Tal vez otro es más adecuado?

He visto donde otros han tenido problemas con IActiveViewEvents y ventanas acoplables, aquí y aquí Así que me pregunto si alguien tiene experiencia con IEditEvents y ventanas acoplables.

1voto

David Puntos 2901

La solución a este problema fue añadir una extensión, y en este caso una Extensión de Editor, y luego colocar los escuchadores de eventos dentro de la extensión. La extensión y la ventana acoplable pueden entonces comunicarse entre sí, dependiendo de la tarea a realizar.

Un buen ejemplo de este enfoque es aquí .

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X