Daha çox

ControlMapMeasureTool-da səhv var? "Bir Bölgəni Ölçün" ArcGIS Engine 10-da təkrarlanan bir dialoq yaradır


Xüsusiyyətlər dialoqu vasitəsilə AxToolbarControl-a ölçü alətini əlavə etdikdə, açılan dialoqdakı uzunluğu və sahəni ölçmək üçün dəyişə bilərik. Ancaq bir ControlsMapMeasureTool kodunu bu şəkildə əlavə etdikdə:

Dim nəzarət AxMapControl kimi = axMapControl1 Yeni vasitə kimi Dim alət alətləri.OnCreate (nəzarət. [Obyekt]) nəzarət

Sənədlərdəki təlimatları izlədik Nəzarət elementləri ilə işləmək üçün bir əmr və ya alət necə yaradılır? Dialoq açılır, ancaq "Bir Bölgəni Ölçün" seçdiyimiz zaman yeni bir Ölçmə dialoqu açılır və hələ də yalnız uzunluğu ölçə bilərik. Nə səhv edirik?

Çoxaltmaq üçün addımlar:

  1. VS-də yeni bir MapControlApplication yaradın
  2. "Test" menyusunda yeni bir MenuItem yaradın
  3. Yeni bir OnClick hadisə işləyicisi yaradın TestToolStripMenuItem_Click
  4. Yuxarıdakı kodu hadisə işləyicisinə yapışdırın
  5. Tətbiqi işə salın
  6. Proqnozlaşdırılan koordinat sistemi (coğrafi koordinat sistemi deyil) məkan istinadına malik bir xəritəni yükləyin.
  7. Test menyusunu seçin
  8. Dialoqdakı "Bir Bölgəni Ölçün" olaraq dəyişdirin
  9. Dialoqu tərəfə sürükləyin.
  10. İki dialoq aktivdir, ancaq uzunluğu ölçmək olar.

Məncə iki ayrı məsələ var.

1) Sahə ölçülməsi yalnız xəritənin məkan istinadları proqnozlaşdırılan bir koordinat sistemi olduqda (coğrafi koordinat sistemi deyil) effektiv olacaqdır.

2) Əgər alətlər panelinin nəzarətindədirsə, alət yaratmamalısınız. Bunun əvəzinə tapmalı və aktivləşdirməlisən.

private void activateMeasuretoolToolStripMenuItem_Click (obyekt göndərən, EventArgs e) {int idx = axToolbarControl1.Find ("esriControls.ControlsMapMeasureTool"); əgər (idx> -1) {// onsuz da alətlər çubuğundakı aləti istifadə edin axToolbarControl1.CurrentTool = (ITool) axToolbarControl1.GetItem (idx) .Command; } başqa {// aləti alətlər çubuğuna əlavə edin ControlsMapMeasureTool t = new ControlsMapMeasureToolClass (); t.OnCreate (axMapControl1.Object); axToolbarControl1.AddItem (t); axMapControl1.CurrentTool = (ITool) t; }}

Bu ipliyin 2 yaşına yaxın olduğunu bilirəm, amma eyni davranışı görürəm.

Bu davranışı hələ kimsə görür? Görünən budur ki, guya sp3-də həll edilmiş sənədləşdirilmiş bir səhv olub ... Bug NIM-068806, amma yenə də SP4 quraşdırılmış davranışı görürəm?

Təşəkkürlər Matt