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.esriaddinxberisi 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 MyTooldalam 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 MyToolbenar - 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 AxToolbarControlke formulir saya dan menambahkan tombol untuk MyToolitu; 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)?
bugsepertinya belum ada; silakan mengedit tag sendiri.