office addin 反射挂事件(求解)
「已注销」 2010-10-09 10:45:32 做一个office addin项目,需要兼容office2003、2007,考虑用反射做。
自定义的菜单可以挂上去了,但是菜单的事件无法挂上去。
用的方法如下:
object Controls = menuBar.GetType().InvokeMember("Controls", BindingFlags.GetProperty, null, "Menu Bar", null);
object[] p2 = new object[] { (byte)1, missing, missing, missing, true };//MsoControlType.msoControlButton=1
tempcbc = Controls.GetType().InvokeMember("Add", BindingFlags.InvokeMethod, Type.DefaultBinder, Controls, p2);//
tempcbc.GetType().InvokeMember("Caption", BindingFlags.SetProperty, Type.DefaultBinder, tempcbc, new object[] { strSubMenubarName });
tempcbc.GetType().InvokeMember("BeginGroup", BindingFlags.SetProperty, Type.DefaultBinder, tempcbc, new object[] { false });
tempcbc.GetType().InvokeMember("Tag", BindingFlags.SetProperty, Type.DefaultBinder, tempcbc, new object[] { strSubMenubarName });
tempcbc.GetType().InvokeMember("Style", BindingFlags.SetProperty, Type.DefaultBinder, tempcbc, new object[] { (byte)3 });//(byte)
EventInfo evClick = tempcbp.GetType().GetEvent("Click",BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public);
if (evClick != null)
{
evClick.AddEventHandler(tempcbp, new EventHandler(LuckyHandler));
}
请大侠们帮我看看是为什么?