组件 如何禁止三维场景的平移、缩放等操作?

0 投票
或者说如何移除scenecontrol的mousemove事件和mousewheel事件?
10月 15 分类:  26次浏览 | 用户: 行者不懂 初出茅庐 (88 分)

1个回答

0 投票
您好,可以去网上找一下资料,查一下C#如何移除事件,删除委托
10月 15 用户: 邬袁凯 名扬四海 (1,480 分)
                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,全部自定义鼠标交互
...