4 votos

Agregar y quitar herramientas de ArcMap barra de herramientas a través de C# Botón y ArcObjects?

OK, he actualizado el borrador con algunas de las sugerencias pero todavía estoy teniendo algunos problemas. Estoy tratando de crear un botón personalizado en arcmap que cuando se presiona editar una de las barras de herramientas de contenido. Hacer cosas como añadir o quitar herramientas de una barra de herramientas. Un ejemplo sería la creación de un botón que al pulsarlo se quita o cambia todo el texto/font herramientas de edición de la barra de herramientas draw.

He estado Mirando con IToolbarControl2 http://help.arcgis.com/en/sdk/10.0/arcobjects_net/componenthelp/index.html#/IToolbarControl2_Interface/0016000003m7000000/ Parece que para dar acceso a diferentes funciones miembro que me deja editar lo que yo quiero. por desgracia no estoy seguro de cómo hacer referencia a la barra de herramientas específica que quiero editar.

He hecho algunas modificaciones y actualmente, el código se ejecuta y, a continuación, se bloquea cuando intento definir axToolbarControl1.AddToolbarDef a través de:

axToolbarControl1.AddToolbarDef(uID, -1, false, 0, esriCommandStyles.esriCommandStyleIconOnly);

El actual proyecto de código es la siguiente:

///Code to add or remove tools from a toolbar using System;
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using System.IO;
using ESRI.ArcGIS.Framework;
using ESRI.ArcGIS.ArcMap;
using ESRI.ArcGIS.ArcMapUI;
using ESRI.ArcGIS.Controls;
using ESRI.ArcGIS.esriSystem;
using ESRI.ArcGIS.SystemUI;
using ESRI.ArcGIS;

namespace RemoveAllTools2
{
public class RemoveAllTools2 : ESRI.ArcGIS.Desktop.AddIns.Button
{
    IApplication m_application;        //ArcMap application
    IMxDocument m_mxDocument;          //ArcMap document
    public ESRI.ArcGIS.Controls.ToolbarControl axToolbarControl1;
    public UID uID = new UIDClass();

    public RemoveAllTools2()
    {
        MessageBox.Show("setup start");
        m_application = ArcMap.Application;
        MessageBox.Show("m_application set");
        UID uID = new UIDClass();
        uID.Value = "esriArcMapUI.DrawToolBar";
        MessageBox.Show("UID set");

        //code hangs here
        axToolbarControl1.AddToolbarDef(uID, -1, false, 0, esriCommandStyles.esriCommandStyleIconOnly);
        //code hangs here

        MessageBox.Show("axtoolbar set");

    }

    protected override void OnClick()
    {
        MessageBox.Show("clicked");
        IToolbarControl2 ttoolbarControl = axToolbarControl1.Object as IToolbarControl2;
        MessageBox.Show("toolbarControl set");
        uID.Value = "esriArcMapUI.FontNameControl";

        int toolFindIndex = ttoolbarControl.Find(uID);
        if (toolFindIndex!=-1)
        {
             ttoolbarControl.Remove(toolFindIndex);
             MessageBox.Show("Tool remove run finished "); 
        }
        else
        {
            MessageBox.Show("Tool not found");
        }
        MessageBox.Show("IF run finished ");   

    }
    protected override void OnUpdate()
    {

    }
}

}

Cualquier ayuda o comentario será muy apreciada.

2voto

Farid Cher Puntos 5306

ESRI.ArcGIS.Controles.ToolbarControl clase es para ArcEngine Aplicación y usted no debería usar en ArcMap con ArcObject.

Para Eliminar un comando desde la barra de herramientas: Sólo se necesita el nombre o el UID del comando que desea quitar de la barra de herramientas. Supongamos que desea eliminar fullExtent comando desde la barra de herramientas Herramientas:

var fullExtent = asraArcMapEngine.getCommandItem("esriArcMapUI.FullExtentCommand");
fullExtent.Delete();

Para Agregar un botón a una Barra de herramientas: 1 - en primer lugar usted necesita para obtener un identificador de la barra de herramientas el uso de este método:

public static ICommandBar GetToolbarByName(IApplication mapplication,String toolbarName)// Example: "esriArcMapUI.StandardToolBar"
            {
                ESRI.ArcGIS.Framework.ICommandBars commandBars = mapplication.Document.CommandBars;
                ESRI.ArcGIS.esriSystem.UID barID = new ESRI.ArcGIS.esriSystem.UIDClass();
                barID.Value = toolbarName; 
                ESRI.ArcGIS.Framework.ICommandItem commandItem = commandBars.Find(barID, false, false);
                if (commandItem != null && commandItem.Type == ESRI.ArcGIS.Framework.esriCommandTypes.esriCmdTypeToolbar)
                {
                    return (ESRI.ArcGIS.Framework.ICommandBar)commandItem;
                }
                else
                    return null;
            }

A continuación, utilice el método de ICommandBar para agregar los comandos:

ICommandBar cmdBar = GetToolbarByName(application,"esriArcMapUI.StandardToolBar")
cmdBar.Add("UID_of_MyCustomCommand");

0voto

Farid Cher Puntos 5306

Este arcgis desktop Complemento que pueda ayudar con tu problema, Enlace

0voto

user41445 Puntos 1

Usted tiene que inicializar el axToolbarControl como el de abajo

//Add a toolbardef by passing a UID
  UID uID = new UIDsClass();
  uID.Value = "esriControls.ControlsMapNavigationToolbar";
  axToolbarControl1.AddToolbarDef(uID,-1,false,0,esriCommandStyles.esriCommandStyleIconOnly);

Después de que usted puede conseguir el objeto como IToolbarControl2 y, por lo tanto editar la barra de herramientas.

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