Страница 1 из 1

Add-ins.C#.Взаимоувязывание контролов.

Добавлено: 11 окт 2013, 21:25
dravig
Добрый вечер.
Я начал осваивать программирование на C# под аркгис, и столкнулся с некоторыми трудностями.

Например у меня есть add-in для ArcMap. В нем есть инструмент, кнопка и комбобокс. Управлять, инструментом у меня получается только из класса инструмента, где я могу написать

Код: Выделить всё

this.enabled
. Как мне обратиться к управлению инструментом из класса кнопки?

Отдельная проблема - это увязывание действий моих контролов с сессией редактирования.
В классе самого инструмента я написал такую штуку:

Код: Выделить всё

public  IEditor m_Editor = (ESRI.ArcGIS.Editor.IEditor)ArcMap.Application.FindExtensionByName("ESRI Object Editor");
Это позволило мне например активировать и деактивировать его одновременно с командами StartEditing и Stop Editing

Код: Выделить всё

if (m_Editor.EditState == ESRI.ArcGIS.Editor.esriEditState.esriStateEditing)
            {          
                this.Enabled = true; 
            }
            else
            {
                this.Enabled = false;
            }

Дальше я с помощью инструмента провожу действия над таблицей атрибутов. Сначала все хорошо: тыкаешь им на объекты и атрибуты меняются как надо. Но когда я хочу завершить редактирование, во-первых не выскакивает стандартное окно "Do you want to save edits", во-вторых если сохранить изменения принудительно, и затем - завершить редактирование - то ArcMap тупо вылетает, ничего не объясняя.

Буду очень признателен, если направите меня в какую сторону копать. Могу представить полный код с конкретными действиями над таблицей атрибутов, если дело все-таки в нем.

Re: Add-ins.C#.Взаимоувязывание контролов.

Добавлено: 13 окт 2013, 17:36
dravig
Удивительно. Попробовал переписать инструмент как existing arc objects. И ArcMap перестал вылетать. Не понимаю логику всего этого.