Tôi đang làm việc với một bổ trợ cho ArcMap 10.0 có thêm thanh công cụ cho ArcMap. Một OpenModelessDialogCommandnút lệnh ( ) trên thanh công cụ đó sẽ mở hộp thoại WinForms không chế độ, từ đó MyToolcó thể kích hoạt một công cụ ( ) để chọn một tính năng trên bản đồ.
My Config.esriaddinxchứa các khai báo lệnh và thanh công cụ:
<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>
Những gì tôi đang gặp vấn đề là kích hoạt MyTooltrong biểu mẫu. Tất cả những gì tôi tìm thấy trên internet là các mẫu mã dọc theo dòng:
// get a reference to an instance of MyTool:
ICommandItem myTool = ArcMap.Application.Document.CommandBars.Find("MyTool");
// activate MyTool:
ArcMap.Application.CurrentTool = myTool;
Tuy nhiên, điều này rõ ràng đòi hỏi phải MyToolthực sự xuất hiện trong một thanh lệnh (ví dụ: thanh công cụ) của bổ trợ của tôi. Nhưng đó không phải là trường hợp. Vì vậy, tôi đã thử điều này tiếp theo:
ITool myTool = new MyTool();
ArcMap.Application.CurrentTool = myTool; // Type mismatch! An ICommandItem is expected.
Tôi thậm chí đã xem xét thêm một hình vô hình AxToolbarControlvào biểu mẫu của mình và thêm một nút cho MyToolnó; nhưng sau đó tôi gặp vấn đề về cách kết nối thanh công cụ đó (thông qua SetBuddyControl) với bản đồ của tài liệu đã mở. Tôi không muốn công cụ hoạt động riêng biệt AxMapControl, tôi muốn nó hoạt động trực tiếp với bản đồ chính được hiển thị trong ArcMap.
Câu hỏi:
Làm cách nào để kích hoạt một công cụ tùy chỉnh không được thêm vào bất kỳ thanh công cụ nào (hoặc thanh lệnh khác, cho vấn đề đó)?
bugdường như chưa tồn tại; xin vui lòng tự chỉnh sửa các thẻ.