首页 / 浏览问题 / 组件GIS / 问题详情
组件 如何禁止三维场景的平移、缩放等操作?
256EXP 2019年10月15日
或者说如何移除scenecontrol的mousemove事件和mousewheel事件?

1个回答

您好,可以去网上找一下资料,查一下C#如何移除事件,删除委托
2,432EXP 2019年10月15日
                Type t= m_sceneControl.GetType();  

                PropertyInfo propInfo = t.GetProperty("Events", BindingFlags.Instance | BindingFlags.NonPublic);

                EventHandlerList eventHandlers = (EventHandlerList)propInfo.GetValue(m_sceneControl, null);

                System.Reflection.FieldInfo fieldInfo1 = typeof(Control).GetField("MouseWheel", BindingFlags.Static | BindingFlags.NonPublic);
                Delegate del1 = eventHandlers[fieldInfo1.GetValue(m_sceneControl)];


                if (del1 != null)
                {
                    foreach (Delegate temp in del1.GetInvocationList())
                    {
                        eventHandlers.RemoveHandler(fieldInfo1.GetValue(null), temp);
                    }
                }

好的,找到了一个,我试试。

您好,我试了,不行。

场景控件对象的事件处理程序列表中找不到原始的 鼠标滑轮滚动事件的委托。

我手动注册事件之后,才能找到我写的委托。。。

m_sceneControl.MouseWheel += new MouseEventHandler(testaaa);
您好,如果你那边不会改写事件,那就用scenControl.InteractionMode设置为CustomAll,全部自定义鼠标交互
...