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 OpenModelessDialogCommand
nút lệnh ( ) trên thanh công cụ đó sẽ mở hộp thoại WinForms không chế độ, từ đó MyTool
có thể kích hoạt một công cụ ( ) để chọn một tính năng trên bản đồ.
My Config.esriaddinx
chứ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 MyTool
trong 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 MyTool
thự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 AxToolbarControl
vào biểu mẫu của mình và thêm một nút cho MyTool
nó; 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 đề đó)?
bug
dường như chưa tồn tại; xin vui lòng tự chỉnh sửa các thẻ.