Estou trabalhando em um suplemento para o ArcMap 10.0 que adiciona uma barra de ferramentas ao ArcMap. Um OpenModelessDialogCommand
botã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.esriaddinx
conté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 MyTool
do 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 MyTool
realmente 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 AxToolbarControl
ao meu formulário e adicionar um botão por MyTool
lá; 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)?
bug
parece que ainda não existe; sinta-se à vontade para editar as tags.