Sto lavorando a un componente aggiuntivo per ArcMap 10.0 che aggiunge una barra degli strumenti ad ArcMap. Un OpenModelessDialogCommand
pulsante command ( ) su quella barra degli strumenti apre una finestra di dialogo WinForms non modale, da cui è MyTool
possibile attivare uno strumento ( ) per selezionare, ad esempio, una funzione sulla mappa.
My Config.esriaddinx
contiene 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 MyTool
nel 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 MyTool
effettivamente 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 AxToolbarControl
al mio modulo e aggiungere un pulsante per MyTool
lì; 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)?
bug
non sembra esistere ancora; non esitate a modificare i tag da soli.