Saya sedang mengerjakan add-in untuk ArcMap 10.0 yang menambahkan toolbar ke ArcMap. Satu perintah ( OpenModelessDialogCommand
) tombol pada toolbar yang membuka dialog WinForms modeless, dari mana alat ( MyTool
) dapat diaktifkan untuk misalnya memilih fitur pada peta.
My Config.esriaddinx
berisi deklarasi perintah dan toolbar ini:
<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>
Apa yang saya punya masalah dengan mengaktifkan MyTool
dalam formulir. Yang saya temukan di internet adalah contoh kode di sepanjang baris:
// get a reference to an instance of MyTool:
ICommandItem myTool = ArcMap.Application.Document.CommandBars.Find("MyTool");
// activate MyTool:
ArcMap.Application.CurrentTool = myTool;
Namun, ini tampaknya mengharuskan yang MyTool
benar - benar muncul di bilah perintah (misalnya bilah alat) dari add-in saya. Tapi bukan itu masalahnya. Jadi, saya sudah mencoba ini selanjutnya:
ITool myTool = new MyTool();
ArcMap.Application.CurrentTool = myTool; // Type mismatch! An ICommandItem is expected.
Saya bahkan telah melihat ke dalam menambahkan yang tidak terlihat AxToolbarControl
ke formulir saya dan menambahkan tombol untuk MyTool
itu; tapi kemudian saya mengalami masalah tentang bagaimana menghubungkan bilah alat itu (via SetBuddyControl
) ke peta dokumen yang dibuka. Saya tidak ingin alat berfungsi secara terpisah AxMapControl
, saya ingin alat itu bekerja secara langsung dengan peta utama yang ditunjukkan di ArcMap.
Pertanyaan:
Bagaimana cara mengaktifkan alat khusus yang tidak ditambahkan ke bilah alat apa pun (atau bilah perintah lainnya, dalam hal ini)?
bug
sepertinya belum ada; silakan mengedit tag sendiri.