Sto lavorando a un componente aggiuntivo per ArcMap 10.0 che aggiunge una barra degli strumenti ad ArcMap. Un OpenModelessDialogCommandpulsante command ( ) su quella barra degli strumenti apre una finestra di dialogo WinForms non modale, da cui è MyToolpossibile attivare uno strumento ( ) per selezionare, ad esempio, una funzione sulla mappa.
My Config.esriaddinxcontiene queste dichiarazioni di comandi e barre degli strumenti:
<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>
Ciò con cui ho problemi è l'attivazione MyToolnel modulo. Tutto quello che ho trovato su Internet sono esempi di codice sulla falsariga di:
// get a reference to an instance of MyTool:
ICommandItem myTool = ArcMap.Application.Document.CommandBars.Find("MyTool");
// activate MyTool:
ArcMap.Application.CurrentTool = myTool;
Tuttavia, ciò a quanto pare richiede che venga MyTooleffettivamente visualizzato in una barra dei comandi (ad es. Barra degli strumenti) del mio componente aggiuntivo. Ma non è così. Quindi, ho provato questo dopo:
ITool myTool = new MyTool();
ArcMap.Application.CurrentTool = myTool; // Type mismatch! An ICommandItem is expected.
Ho anche cercato di aggiungere un invisibile AxToolbarControlal mio modulo e aggiungere un pulsante per MyToollì; ma poi sto incontrando problemi su come collegare quella barra degli strumenti (tramite SetBuddyControl) alla mappa del documento aperto. Non voglio che lo strumento funzioni in modo separato AxMapControl, voglio che funzioni direttamente con la mappa principale mostrata in ArcMap.
Domanda:
Come posso attivare uno strumento personalizzato che non viene aggiunto a nessuna barra degli strumenti (o altra barra dei comandi, per quella materia)?
bugnon sembra esistere ancora; non esitate a modificare i tag da soli.