2 votos

Referencia para IDockableWindow

Soy nuevo en ArcObjects .NET. Estoy tratando de abrir una ventana acoplable con el siguiente código:

public class CAD_Test_01_button : ESRI.ArcGIS.Desktop.AddIns.Button
{
    public CAD_Test_01_button()
    {
    }

    protected override void OnClick()
    {

        UID dockWinID = new UIDClass();
        dockWinID.Value = ThisAddIn.IDs.DockableWindow1;

        // Use GetDockableWindow directly as we want the client IDockableWindow not the internal class
        IDockableWindow dockWindow = ArcMap.DockableWindowManager.GetDockableWindow(dockWinID);
        dockWindow.Show(true);

    }

    protected override void OnUpdate()
    {
    }
}

Pero me salen los errores:

Error: El tipo o nombre del espacio de nombres 'IDockableWindow' no pudo ser encontrado (¿le falta una directiva using o una referencia de ensamblaje?)

Error: El nombre 'ArcMap' no existe en el contexto actual

¿Qué referencias podría estar perdiendo?

3voto

saint_groceon Puntos 2696

El siguiente código me funciona:

using ESRI.ArcGIS.Framework;
using ESRI.ArcGIS.esriSystem;

namespace ArcMapAddin2
{
    public class MyButton1 : ESRI.ArcGIS.Desktop.AddIns.Button
    {
        private static IDockableWindow _DockWindow;
        public MyButton1()
        {
            UID dockWinID = new UIDClass();
            dockWinID.Value = @"Microsoft_ArcMapAddin2_MyDockwin";
            _DockWindow = ArcMap.DockableWindowManager.GetDockableWindow(dockWinID);
        }

        protected override void OnClick()
        {
            _DockWindow.Show(!_DockWindow.IsVisible());
        }

        protected override void OnUpdate()
        {
        }
    }
}

0voto

user19213 Puntos 1

IDockableWindow está en el espacio de nombres ESRI.ArcGIS.Framework - haz referencia a él y añade una sentencia using.

ArcMap no funcionará, excepto en VBA. Necesita crear su gestor desde el objeto "hook" en el evento OnCreate.

IApplication m_app = hook as IApplication;
IDockableWindowManager pDocWinMgr = m_app as IDockableWindowManager;

0voto

Michael Puntos 21

Por defecto existe el siguiente método incluido en el Config.Designer.cs de Config.esriaddinx :

internal static ESRI.ArcGIS.esriSystem.UID ToUID(this System.String id) {
    ESRI.ArcGIS.esriSystem.UID uid = new ESRI.ArcGIS.esriSystem.UIDClass();
    uid.Value = id;
    return uid;
}

Puedes usarlo así:

IDockableWindow pDockableWindow = ArcMap.DockableWindowManager.GetDockableWindow(
    ThisAddIn.ToUID(
        ThisAddIn.IDs.<NAME OF YOUR DOCKABLE WINDOW>
    )
);

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