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.esriaddinxenthä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, MyTooldas 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 MyTooltatsä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?
bugscheint noch nicht zu existieren; Bitte zögern Sie nicht, die Tags selbst zu bearbeiten.