Estoy trabajando en un complemento para ArcMap 10.0 que agrega una barra de herramientas a ArcMap. Un OpenModelessDialogCommand
botón de comando ( ) en esa barra de herramientas abre un cuadro de diálogo WinForms sin modo, desde el cual MyTool
se puede activar una herramienta ( ) para, por ejemplo, seleccionar una función en el mapa.
My Config.esriaddinx
contiene estas declaraciones de comandos y barras de herramientas:
<Commands>
<!-- this is the command that opens the modeless WinForms form, from where
MyTool is available: -->
<Button id="OpenModelessFormCommand" ... />
<!-- MyTool is not directly referenced in any toolbar defined in this file: -->
<Tool id="MyTool" class="MyTool" ... />
</Commands>
<Toolbars>
<Toolbar ...>
<Items>
<Button refID="OpenModelessFormCommand" />
</Items>
</Toolbar>
</Toolbars>
Lo que tengo problemas es activar MyTool
en el formulario. Todo lo que he encontrado en Internet son ejemplos de código a lo largo de las líneas de:
// get a reference to an instance of MyTool:
ICommandItem myTool = ArcMap.Application.Document.CommandBars.Find("MyTool");
// activate MyTool:
ArcMap.Application.CurrentTool = myTool;
Sin embargo, esto aparentemente requiere que MyTool
realmente aparezca en una barra de comandos (por ejemplo, barra de herramientas) de mi complemento. Pero ese no es el caso. Entonces, probé esto a continuación:
ITool myTool = new MyTool();
ArcMap.Application.CurrentTool = myTool; // Type mismatch! An ICommandItem is expected.
Incluso he buscado agregar un invisible AxToolbarControl
a mi formulario y agregar un botón para MyTool
allí; pero luego me encuentro con problemas sobre cómo conectar esa barra de herramientas (vía SetBuddyControl
) al mapa del documento abierto. No quiero que la herramienta funcione por separado AxMapControl
, quiero que funcione directamente con el mapa principal que se muestra en ArcMap.
Pregunta:
¿Cómo activo una herramienta personalizada que no se agrega a ninguna barra de herramientas (u otra barra de comandos, para el caso)?
bug
parece que todavía no existe; por favor, siéntase libre de editar las etiquetas usted mismo.