2014-10-23 3 views
0

C# 및 ArcObjects를 사용하여 플러그인을 통해 featureclasses의 행을 업데이트 중입니다. 어떤 이유로, 피쳐 클래스는 슬라이더가 움직일 때 제대로 리프레시되지 않습니다. 그러나 수동으로 맵을 새로 고침하면 제대로 표시됩니다. timeslider 업데이트의 디스플레이를 완전히 새로 고쳐야이 문제를 해결할 수 있는지 테스트하고 싶습니다. 이를 위해 타임 코드 업데이트 이벤트를 내 코드에서 듣고 싶습니다.C#을 사용하여 ArcMap에서 TimeSlider 이벤트를 수신하는 방법

ArcSDE Direct Connection 테이블이 제대로 표시되지 않는 것과 관련된 다른 버그를 보았습니다. 그러나 ArcSDE Direct Connection을 사용하지 않기 때문에 이것은 내 문제가 아닙니다.

또한 속성 색인 (시간 필드에서)과 공간 색인은 있지만 주사위는 다시 계산하지 않았습니다.

따라서 시간 경과 업데이트를 새로 고치는 것이 도움이 될 수 있기를 바랍니다.

내 C# 플러그인은 ArcMap 10.1 SP1에서 실행됩니다. 백그라운드 엔터프라이즈 geoDB가 SQLServer에 있습니다.

감사합니다.

답변

0

검색 당일 후에 내 질문을 게시 한 다음 1 시간 이내에 내 해결책을 찾았습니다.

ITimeDisplayEvents_DisplayTimeChangedEventHandler DTC_EH; 



    private void enableTimeDisplayEventHandler(bool enable = true) 
     { 

      IMxDocument pMxDoc = ArcMap.Document; 
      IMap pMap = pMxDoc.FocusMap; 
      IActiveView pActiveView = pMap as IActiveView; 
      IScreenDisplay pScreenDisplay = pActiveView.ScreenDisplay; 
      ITimeDisplay pTimeDisplay = pScreenDisplay as ITimeDisplay; 

    DTC_EH = new ITimeDisplayEvents_DisplayTimeChangedEventHandler(this.OnDisplayTimeChangedEventHandler); 
         ((ITimeDisplayEvents_Event)pTimeDisplay).DisplayTimeChanged += DTC_EH; 
} 


private void OnDisplayTimeChangedEventHandler(IDisplay d, object oldvalue, object newvalue) 
{ 
      IMxDocument pMxDoc = ArcMap.Document; 
      IMap pMap = pMxDoc.FocusMap; 
      IActiveView pActiveView = pMap as IActiveView; 
      pActiveView.Refresh(); 
} 

다른 사람이 유용하다고 생각하면 좋겠다.