Я работаю над надстройкой для ArcMap 10.0, которая добавляет панель инструментов в ArcMap. Одна OpenModelessDialogCommand
кнопка command ( ) на этой панели инструментов открывает немодальное диалоговое окно WinForms, из которого MyTool
можно активировать инструмент ( ), например, для выбора объекта на карте.
My Config.esriaddinx
содержит следующие объявления команд и панелей инструментов:
<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>
У меня проблемы с активацией MyTool
в форме. Все, что я нашел в интернете, это примеры кода:
// get a reference to an instance of MyTool:
ICommandItem myTool = ArcMap.Application.Document.CommandBars.Find("MyTool");
// activate MyTool:
ArcMap.Application.CurrentTool = myTool;
Тем не менее, это, очевидно, требует, чтобы на MyTool
самом деле появился в панели команд (например, панель инструментов) моей надстройки. Но это не так. Итак, я попробовал это дальше:
ITool myTool = new MyTool();
ArcMap.Application.CurrentTool = myTool; // Type mismatch! An ICommandItem is expected.
Я даже смотрел на добавление невидимой AxToolbarControl
формы и добавление кнопки для MyTool
нее; но затем у меня возникают проблемы с подключением этой панели инструментов (через SetBuddyControl
) к карте открытого документа. Я не хочу, чтобы инструмент функционировал отдельно AxMapControl
, я хочу, чтобы он работал напрямую с основной картой, показанной в ArcMap.
Вопрос:
Как активировать пользовательский инструмент, который не добавляется ни на одну панель инструментов (или в другую панель команд, в этом отношении)?
bug
, похоже, его пока нет; пожалуйста, не стесняйтесь редактировать теги самостоятельно.