Je travaille sur un complément pour ArcMap 10.0 qui ajoute une barre d'outils à ArcMap. Un OpenModelessDialogCommand
bouton de commande ( ) de cette barre d'outils ouvre une boîte de dialogue WinForms non modale, à partir de laquelle un outil ( MyTool
) peut être activé afin par exemple de sélectionner une entité sur la carte.
My Config.esriaddinx
contient ces déclarations de commandes et de barres d'outils:
<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>
Ce qui me pose problème, c'est l'activation MyTool
dans le formulaire. Tout ce que j'ai trouvé sur Internet, ce sont des exemples de code du type:
// get a reference to an instance of MyTool:
ICommandItem myTool = ArcMap.Application.Document.CommandBars.Find("MyTool");
// activate MyTool:
ArcMap.Application.CurrentTool = myTool;
Cependant, cela nécessite apparemment que MyTool
s'affiche réellement dans une barre de commandes (par exemple la barre d'outils) de mon complément. Mais ce n'est pas le cas. J'ai donc essayé ceci ensuite:
ITool myTool = new MyTool();
ArcMap.Application.CurrentTool = myTool; // Type mismatch! An ICommandItem is expected.
J'ai même cherché à ajouter un invisible AxToolbarControl
à mon formulaire et à y ajouter un bouton MyTool
; mais je rencontre des problèmes sur la façon de connecter cette barre d'outils (via SetBuddyControl
) à la carte du document ouvert. Je ne veux pas que l'outil fonctionne dans un environnement distinct AxMapControl
, je veux qu'il fonctionne directement avec la carte principale affichée dans ArcMap.
Question:
Comment puis-je activer un outil personnalisé qui n'est ajouté à aucune barre d'outils (ou à une autre barre de commandes, d'ailleurs)?
bug
ne semble pas encore exister; n'hésitez pas à modifier les balises vous-même.