Mais

Arcobjects 10.3.1: ouvintes de TOC

Arcobjects 10.3.1: ouvintes de TOC


Estou escrevendo um addin usando ArcObjects C #. Eu configurei os seguintes ouvintes, mas eles não estão sendo atingidos.

Meu código no topo da classe addin.Extension é:

… Private static IActiveViewEvents_ItemAddedEventHandler tocAddHandler; private static IActiveViewEvents_ItemDeletedEventHandler tocDeleteHandler;… override protegido void OnStartup () {WireDocumentEvents (); }… Private void WireDocumentEvents () {ArcMap.Events.OpenDocument + = new ESRI.ArcGIS.ArcMapUI.IDocumentEvents_OpenDocumentEventHandler (PostMxDLoad); }… Private void PostMxDLoad () {… algumas outras coisas tocDeleteHandler = new IActiveViewEvents_ItemDeletedEventHandler (SettingsMgr.TableofContents.OnTOCItemDeleted); ((IActiveViewEvents_Event) ArcMap.Document.FocusMap) .ItemDeleted + = tocDeleteHandler; tocAddHandler = new IActiveViewEvents_ItemAddedEventHandler (SettingsMgr.TableofContents.OnTOCItemAdded); ((IActiveViewEvents_Event) ArcMap.Document.FocusMap) .ItemAdded + = tocAddHandler; }

Você deve mudar o seuPostMxDLoadmétodo como o seguinte e também adicionar outro método, digamosOnActiveViewEventsItemDeletedpara lidar com o evento. Veja como:

private void PostMxDLoad () {//… alguma outra coisa if (ArcMap.Document.FocusMap! = null) {// você precisa fazer o loop a seguir se houver outros dataframes (mapas) em seu documento mxd var activeViewEvents = (IActiveViewEvents_Event) ArcMap.Document.FocusMap; activeViewEvents.ItemDeleted + = novo ESRI.ArcGIS.Carto.IActiveViewEvents_ItemDeletedEventHandler (OnActiveViewEventsItemDeleted); }} private void OnActiveViewEventsItemDeleted (System.Object Item) {// TODO: Adicione seu código aqui System.Windows.Forms.MessageBox.Show ("ItemDeleted"); }

Você pode fazer o mesmo para o evento ItemAdded de acordo.


Não tenho certeza do que você deseja fazer exatamente, mas parece que você deseja receber um evento quando uma camada for adicionada ou excluída do mapa, certo? Aqui está um exemplo:

private IActiveViewEvents_Event _avEvents; private void SetupEventHandler () {var mxDoc = (IMxDocument) ArcMap.Application.Document; _avEvents = (IActiveViewEvents_Event) mxDoc.FocusMap; _avEvents.ItemAdded + = ItemAdded; _avEvents.ItemDeleted + = ItemDeleted; } private void ItemAdded (item de objeto) {System.Windows.Forms.MessageBox.Show ("Added"); } private void ItemDeleted (item de objeto) {System.Windows.Forms.MessageBox.Show ("Excluído"); }

Assista o vídeo: Instalacion ArcObjects.NET, con Visual Studio 2013