ฉันกำลังทำงานกับ Add-in สำหรับ 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
นี้ปรากฏอยู่ในแถบคำสั่ง (เช่นแถบเครื่องมือ) ของ Add-in ของฉัน แต่นั่นไม่ใช่กรณี ดังนั้นฉันได้ลองสิ่งต่อไปนี้แล้ว:
ITool myTool = new MyTool();
ArcMap.Application.CurrentTool = myTool; // Type mismatch! An ICommandItem is expected.
ฉันได้มองหาการเพิ่มสิ่งที่มองไม่เห็นAxToolbarControl
ในแบบฟอร์มของฉันและเพิ่มปุ่มสำหรับสิ่งMyTool
นั้น แต่แล้วฉันพบปัญหาเกี่ยวกับวิธีการเชื่อมต่อแถบเครื่องมือนั้น (ผ่านSetBuddyControl
) เข้ากับแผนที่ของเอกสารที่เปิดอยู่ ฉันไม่ต้องการให้เครื่องมือทำงานแยกกันAxMapControl
ฉันต้องการให้มันทำงานโดยตรงกับแผนที่หลักที่แสดงใน ArcMap
คำถาม:
ฉันจะเปิดใช้งานเครื่องมือแบบกำหนดเองที่ไม่ได้เพิ่มลงในแถบเครื่องมือใด ๆ (หรือแถบคำสั่งอื่นสำหรับเรื่องนั้นได้อย่างไร)
bug
ยังไม่มีอยู่จริง โปรดแก้ไขแท็กด้วยตนเอง