Je travaille sur un complément pour ArcMap 10.0 qui ajoute une barre d'outils à ArcMap. Un OpenModelessDialogCommandbouton 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.esriaddinxcontient 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 MyTooldans 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 MyTools'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)?
bugne semble pas encore exister; n'hésitez pas à modifier les balises vous-même.