我们可以在工具的OnCreate()方法里将ArrayList类型的对象传进来,ArrayList里存放的是mapcontrol.object,scenecontrol.object,这样在自定义工具里就可以对2个窗口同时进行操作了;如下面的代码 public override void OnCreate(object hook) { try { m_hookHelper = new HookHelperClass(); m_SceneHookHelper = new SceneHookHelperClass(); //m_hookHelper.Hook = hook; ArrayList arrControls = hook as ArrayList; m_hookHelper.Hook = arrControls[0] as object; m_SceneHookHelper.Hook = arrControls[1] as object; if (m_hookHelper.ActiveView == null) { m_hookHelper = null; } } catch { m_hookHelper = null; } if (m_hookHelper == null) base.m_enabled = false; else base.m_enabled = true; // TODO: Add other initialization code } 调用Tool的代码 ArrayList arrControls = new ArrayList(); arrControls.Add(m_mapControl.Object); arrControls.Add(m_sceneControl.Object); ICommand pCmd = new MyCustomTool(); pCmd.OnCreate(arrControls as object); m_mapControl.CurrentTool = pCmd as ITool; ================================================================= |
|