如何使用C#在ArcMap中侦听TimeSlider事件

时间:2014-10-23 16:29:15

标签: c# events time arcmap arcobjects

我正在使用C#和ArcObjects通过插件更新功能类行。由于某些原因,当移动滑块时,功能类没有正确刷新,但是如果我手动刷新地图,它们会正确显示。我想测试是否强制在timelider更新上完全刷新显示将解决问题。为了做到这一点,我想在我的代码中监听timeslider更新事件。

我看到另一个与ArcSDE Direct Connection表无法正常显示相关的错误,但这不是我的问题,因为我没有使用ArcSDE Direct Connection。

我还重新计算了属性索引(在时间字段上)和空间索引但没有骰子。

所以,希望在timelider更新上刷新可能有所帮助。

我的C#插件在ArcMap 10.1 SP1中运行。后台企业geoDB位于SQLServer上。

谢谢!

1 个答案:

答案 0 :(得分:0)

经过一天的搜索后,我发布了我的问题,然后在一小时内找到了我的解决方案。

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();
}

希望其他人觉得有用。