Ich arbeite an einem Add-In für ArcMap 10.0, das ArcMap eine Symbolleiste hinzufügt. Eine Befehlsschaltfläche ( OpenModelessDialogCommand
) in dieser Symbolleiste öffnet ein modellloses WinForms-Dialogfeld, in dem ein tool ( MyTool
) aktiviert werden kann, um z. B. ein Feature auf der Karte auszuwählen.
My Config.esriaddinx
enthält die folgenden Befehls- und Symbolleistendeklarationen:
<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>
Ich habe Probleme damit, MyTool
das Formular zu aktivieren . Alles, was ich im Internet gefunden habe, sind Codebeispiele wie:
// get a reference to an instance of MyTool:
ICommandItem myTool = ArcMap.Application.Document.CommandBars.Find("MyTool");
// activate MyTool:
ArcMap.Application.CurrentTool = myTool;
Dies erfordert jedoch anscheinend, dass MyTool
tatsächlich in einer Befehlsleiste (z. B. Symbolleiste) meines Add-Ins angezeigt wird. Das ist aber nicht der Fall. Also habe ich das als nächstes versucht:
ITool myTool = new MyTool();
ArcMap.Application.CurrentTool = myTool; // Type mismatch! An ICommandItem is expected.
Ich habe sogar versucht AxToolbarControl
, meinem Formular ein Unsichtbares hinzuzufügen und dort eine Schaltfläche hinzuzufügen MyTool
. Aber dann habe ich Probleme beim Verbinden dieser Symbolleiste (über SetBuddyControl
) mit der Karte des geöffneten Dokuments. Ich möchte nicht, dass das Tool in einer separaten Funktion funktioniert AxMapControl
. Ich möchte, dass es direkt mit der in ArcMap angezeigten Hauptkarte funktioniert.
Frage:
Wie aktiviere ich ein benutzerdefiniertes Werkzeug, das keiner Symbolleiste (oder einer anderen Befehlsleiste) hinzugefügt wurde?
bug
scheint noch nicht zu existieren; Bitte zögern Sie nicht, die Tags selbst zu bearbeiten.