Рабочая область при программировании на .Net
-
- Участник
- Сообщения: 69
- Зарегистрирован: 04 июл 2016, 16:02
- Репутация: 8
Рабочая область при программировании на .Net
Добрый день. Разрабатываю надстройку для ArcMap на C#.
Мне необходимо произвести некоторые действия с таблицами в режиме редактирования. Для этого я определяю IEditor:
IApplication m_application = Hook as IApplication;
UID editorID = new UIDClass();
editorID.Value = "esriEditor.Editor";
IEditor m_Editor = m_application.FindExtensionByCLSID(editorID) as IEditor;
Далее мне необходимо работать со слоями:
IEditLayers editLayers = (IEditLayers)m_Editor;
IFeatureLayer NewLayers = (IFeatureLayer)editLayers.CurrentLayer;
И вроде всё нормально. Однако как только нажать кнопку Сохранить в Редакторе или закрепить версию editLayers.CurrentLayer становится равным null и приходится перезапускать редактор. Рабочая область при этом не меняется, остается прежней.
Может кто сталкивался с подобной проблемой и знает её решение?
Мне необходимо произвести некоторые действия с таблицами в режиме редактирования. Для этого я определяю IEditor:
IApplication m_application = Hook as IApplication;
UID editorID = new UIDClass();
editorID.Value = "esriEditor.Editor";
IEditor m_Editor = m_application.FindExtensionByCLSID(editorID) as IEditor;
Далее мне необходимо работать со слоями:
IEditLayers editLayers = (IEditLayers)m_Editor;
IFeatureLayer NewLayers = (IFeatureLayer)editLayers.CurrentLayer;
И вроде всё нормально. Однако как только нажать кнопку Сохранить в Редакторе или закрепить версию editLayers.CurrentLayer становится равным null и приходится перезапускать редактор. Рабочая область при этом не меняется, остается прежней.
Может кто сталкивался с подобной проблемой и знает её решение?
-
- Активный участник
- Сообщения: 133
- Зарегистрирован: 17 май 2011, 06:22
- Репутация: 50
- Откуда: Нижний Новгород
Re: Рабочая область при программировании на .Net
Зачем работать напрямую со слоями? Отлавливайте нужные события OnChangeFeature, OnCreateFeature, OnStartEditing, OnStopEditing и т.п. определяете редактируемый объект и поступайте как нужно
-
- Участник
- Сообщения: 69
- Зарегистрирован: 04 июл 2016, 16:02
- Репутация: 8
Re: Рабочая область при программировании на .Net
В том то и проблема, что нужно ещё и со слоями. А про события спасибо что напомнили, удобная вещь
-
- Активный участник
- Сообщения: 133
- Зарегистрирован: 17 май 2011, 06:22
- Репутация: 50
- Откуда: Нижний Новгород
Re: Рабочая область при программировании на .Net
И все таки для меня загадка - что мешает обращаться к слоям когда происходят определенные события и что за нужда постоянно держать слои под постоянным контролем?
-
- Участник
- Сообщения: 69
- Зарегистрирован: 04 июл 2016, 16:02
- Репутация: 8
Re: Рабочая область при программировании на .Net
Пользователи...
Действия происходят лишь после того, как пользователь нажал на кнопку. Да, можно отслеживать какой слой (данные) на редактировании, но смысл, если это можно проверить при нажатии на кнопку? Единственное событие - это смотреть или пользователь начал редактирование. Просто мне не понятно, почему после сохранения вылетает значение редактируемого слоя
-
- Активный участник
- Сообщения: 133
- Зарегистрирован: 17 май 2011, 06:22
- Репутация: 50
- Откуда: Нижний Новгород
Re: Рабочая область при программировании на .Net
При изменении данных НЕОБХОДИМО принудительно выходить в режим редактирования (если конечно не начат сеанс редактирования), все измененные объекты сохранять. Если пользователь в ручную сохраняет изменения - то происходит закрытие сеанса редактирования (все изменённые объекты, но не сохраненные, востанавливают свои первоначальные состояния), и запуск нового сеанса - ссылка на редактор соответственно меняется, поэтому у вас на старой ссылке получается NULL.
Отслеживай события начала и конца редактирования, не забывай сохранять измененные объекты и будут счастье
-
- Участник
- Сообщения: 69
- Зарегистрирован: 04 июл 2016, 16:02
- Репутация: 8
Re: Рабочая область при программировании на .Net
спасибо, очень доходчиво объяснили
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 21 гость