Я працюю над надбудовою для ArcMap 10.0, яка додає панель інструментів до ArcMap. Одна OpenModelessDialogCommand
кнопка команд ( ) на цій панелі інструментів відкриває діалогове вікно діалогу WinForms, з якого MyTool
можна активувати інструмент ( ), щоб, наприклад, вибрати функцію на карті.
Мій 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
, здається, ще не існує; будь ласка, сміливо редагуйте теги самостійно.