[GIS] ArcGIS 10: AddIn Extension loading toolbox issue

add-inarcgis-10.0arcobjectsarctoolboxnet

I have an extension class in an ArcMap addin project of which loads a custom toolbox into ArcToolbox when the user opens ArcMap or opens a previously created map. My toolbox gets added to ArcToolbox fine except when the user creates a new map from File > New. My toolbox just disappears (no messages). I'm running AG10 SP2 but it doesn't work in AG10 base either.

Anyone else experience this? Solutions?

protected override void OnStartUp()
{
   AddToolboxes();
   #region Wire events
   ArcMap.Events.NewDocument += delegate() { ArcMap_NewDocument(); };
   #endregion
}
void ArcMap_NewDocument()
{
   AddToolboxes();
}
void AddToolboxes()
    {

        // Load toolbox into ArcToolbox
        IArcToolboxExtension arcTbxExt;
        try
        {
            arcTbxExt = (IArcToolboxExtension)ArcMap.Application.FindExtensionByName("ESRI ArcToolbox");
            if (arcTbxExt == null) { throw new Exception("ArcToolbox extension could not be found."); }
        }
        catch (Exception ex)
        {
            System.Windows.Forms.MessageBox.Show("Error finding ArcToolbox extension." + Environment.NewLine + " - " + ex.Message);
            return;
        }

        try
        {
            IGPToolbox2 toolbox = Maersk.Functions.Toolbox.OpenToolbox("C:\\Toolboxes\\MyToolbox.tbx");
            arcTbxExt.ArcToolbox.AddToolbox((IGPToolbox)toolbox);
            arcTbxExt.ArcToolbox.Refresh();

        }
        catch (Exception ex)
        {
            System.Windows.Forms.MessageBox.Show("Error launching  toolbox." + Environment.NewLine + " - " + ex.Message);
            return;
        }

    }

Best Answer

There's something flaky going on here.

With the add-in extension below, a messagebox comes up showing me my toolbox is there. It works fine the first time the doc loads, but if I hit the new Map File button the messagebox will come up, then a few seconds later the toolbox disappears. Something is clearing the toolboxes after the maps changed event fires.

enter image description here

private IGeoProcessor2 m_Geoproc;
protected override void OnStartup()
{
    ArcMap.Events.MapsChanged += new ESRI.ArcGIS.ArcMapUI.IDocumentEvents_MapsChangedEventHandler(Events_MapsChanged);
    m_Geoproc = new GeoProcessorClass();
}

void Events_MapsChanged()
{
    if(string.IsNullOrEmpty(m_Geoproc.ListToolboxes("testtoolbox").Next()))
    {
        m_Geoproc.AddToolbox(@"D:\gems\MMS\testtoolbox.tbx");
        MessageBox.Show("added toolbox");
    }
}
Related Question