Estou trabalhando em um suplemento para o ArcMap 10.0 que adiciona uma barra de ferramentas ao ArcMap. Um OpenModelessDialogCommandbotão de comando ( ) nessa barra de ferramentas abre uma caixa de diálogo WinForms sem modelagem, na qual uma ferramenta ( MyTool) pode ser ativada para, por exemplo, selecionar um recurso no mapa.
My Config.esriaddinxcontém estas declarações de comando e barra de ferramentas:
<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>
Estou tendo problemas com a ativação MyTooldo formulário. Tudo o que eu encontrei na internet são exemplos de código ao longo das linhas de:
// get a reference to an instance of MyTool:
ICommandItem myTool = ArcMap.Application.Document.CommandBars.Find("MyTool");
// activate MyTool:
ArcMap.Application.CurrentTool = myTool;
No entanto, isso aparentemente requer que MyToolrealmente apareça em uma barra de comandos (por exemplo, barra de ferramentas) do meu suplemento. Mas esse não é o caso. Então, eu tentei isso a seguir:
ITool myTool = new MyTool();
ArcMap.Application.CurrentTool = myTool; // Type mismatch! An ICommandItem is expected.
Eu até tentei adicionar um invisível AxToolbarControlao meu formulário e adicionar um botão por MyToollá; mas estou com problemas para conectar a barra de ferramentas (via SetBuddyControl) ao mapa do documento aberto. Não quero que a ferramenta funcione separadamente AxMapControl, quero que ela funcione diretamente com o mapa principal mostrado no ArcMap.
Pergunta:
Como ativo uma ferramenta personalizada que não é adicionada a nenhuma barra de ferramentas (ou outra barra de comandos)?
bugparece que ainda não existe; sinta-se à vontade para editar as tags.