Pracuję nad dodatkiem do ArcMap 10.0, który dodaje pasek narzędzi do ArcMap. Jeden OpenModelessDialogCommand
przycisk polecenia ( ) na tym pasku narzędzi otwiera niemodalne okno dialogowe WinForm, w którym MyTool
można aktywować narzędzie ( ) w celu np. Wybrania elementu na mapie.
My Config.esriaddinx
zawiera następujące deklaracje poleceń i pasków narzędzi:
<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>
Mam problem z aktywacją MyTool
w formularzu. Wszystko, co znalazłem w Internecie, to próbki kodu w stylu:
// get a reference to an instance of MyTool:
ICommandItem myTool = ArcMap.Application.Document.CommandBars.Find("MyTool");
// activate MyTool:
ArcMap.Application.CurrentTool = myTool;
Jednak najwyraźniej wymaga to, aby MyTool
faktycznie pojawił się na pasku poleceń (np. Pasku narzędzi) mojego dodatku. Ale tak nie jest. Wypróbowałem to następnie:
ITool myTool = new MyTool();
ArcMap.Application.CurrentTool = myTool; // Type mismatch! An ICommandItem is expected.
Nawet zastanawiałem się nad dodaniem niewidzialnego AxToolbarControl
do mojego formularza i dodaniem do niego przycisku MyTool
; ale potem mam problemy z podłączeniem tego paska narzędzi (poprzez SetBuddyControl
) do mapy otwartego dokumentu. Nie chcę, aby narzędzie działało osobno AxMapControl
, chcę, aby działało bezpośrednio z główną mapą pokazaną w ArcMap.
Pytanie:
Jak aktywować niestandardowe narzędzie, które nie zostało dodane do żadnego paska narzędzi (lub innego paska poleceń, jeśli o to chodzi)?
bug
wydaje się, że jeszcze nie istnieje; możesz samodzielnie edytować tagi.