首页 / 浏览问题 / 三维GIS / 问题详情
组件开发SceneControl怎么解除事件绑定?
216EXP 2018年08月15日

1.先做三维场景的开挖功能(开挖功能是一个类),把m_sceneControl_Tracking、m_sceneControl_Tracked绑定给了SceneControl。

  m_sceneControl.Action = Action3D.MeasureArea;
  m_sceneControl.Tracking -= new Tracking3DEventHandler(m_sceneControl_Tracking);
  m_sceneControl.Tracked -= new Tracked3DEventHandler(m_sceneControl_Tracked);
  m_sceneControl.Tracking += new Tracking3DEventHandler(m_sceneControl_Tracking);
  m_sceneControl.Tracked += new Tracked3DEventHandler(m_sceneControl_Tracked);

2.然后做三维面积量算功能(量算功能是另外一个类),需要把TrackingHandler、TrackedHandler重新绑定给m_sceneControl

// 注册事件
// Register the event
m_sceneControl.Tracking += new Tracking3DEventHandler(TrackingHandler);
m_sceneControl.Tracked += new Tracked3DEventHandler(TrackedHandler);
m_sceneControl.MouseUp += m_SceneControl_MouseUp;

问题:先做开挖,然后做面积量算,那么量算时还是开挖的功能,后做量算;

          先做量算,然后做开挖,那么开挖时出现量算的黄色覆盖面。

         怎么在开挖后或者量算后把SceneControl的所有事件绑定解除、再重新绑定给另外的事件。

1个回答

  m_sceneControl.Tracking -= new Tracking3DEventHandler(m_sceneControl_Tracking);
  m_sceneControl.Tracked -= new Tracked3DEventHandler(m_sceneControl_Tracked);
5,560EXP 2018年08月15日
有没有什么方法检查并取消其所有事件绑定。简言之,如果有事件绑定,那么就取消,如果没有事件绑定,就什么都不做。
其实你完全可以这样:

1、初始化的时候就注册事件

2、设置一个全局status参数,当点击不同按钮时改变成不同的参数值

3、在注册的事件中设置判断语句,根据不同的status值执行不同的功能
...