我看了您Blog上的文章:
"得到一个委托链上的所有方法?"
http://blog.sunmast.com/sunmast/archive/2005/04/21/1769.aspx我现在也正好碰到这个问题,但我用得不是.net的内部控件,我用得是外部的ActiveX控件,照您的方法不能解决我得问题。比如我用了一个VB6的ListView控件:我在这一句不能得到正确的值EventHandlerList fplist = pEvents.GetValue(this.axListView1,null) as EventHandlerList;
不知道什么原因。
求您的解答,谢谢。 其实我的问题就是:如何能知道ActiveX控件上某个事件是否加载了某个事件处理方法,有知道的大侠也来帮我一下。
谢谢大家。
"得到一个委托链上的所有方法?"
http://blog.sunmast.com/sunmast/archive/2005/04/21/1769.aspx我现在也正好碰到这个问题,但我用得不是.net的内部控件,我用得是外部的ActiveX控件,照您的方法不能解决我得问题。比如我用了一个VB6的ListView控件:我在这一句不能得到正确的值EventHandlerList fplist = pEvents.GetValue(this.axListView1,null) as EventHandlerList;
不知道什么原因。
求您的解答,谢谢。 其实我的问题就是:如何能知道ActiveX控件上某个事件是否加载了某个事件处理方法,有知道的大侠也来帮我一下。
谢谢大家。
解决方案 »
- c#在一个面板中得到文字的位图
- 菜鸟求解简单问题
- 选择菜单项时,将选择的窗口切换为当前窗口,怎么做?
- C# 控件释放问题
- 如何提取序列
- 请问如何 在 GridView控件中 添加一个 插入按钮
- C# 使用 FastReport 报表的新方法
- 如何得到局域网内全总的计算机名.100分,100分,100分,100分,100分,急.....
- 关于.NET区域性的问题
- C#如何实现五秒刷新一次数据库数据,并对当前数据与五秒前的数据进行比较判定
- 请问如何获取指定目录里全部内容所占硬盘存储空间的大小
- ==== 我要做网站的新闻系统,其中要把新闻内容放在数据里,其中新闻内容中用到加粗,下划线等操作,应该怎么做 =====
http://www.mblogger.cn/web.mblogger.cn/NickChen/posts/19020.htm
如果是用了Interop后的COM,那VS.NET会自动为你生成一个COM的包装,同样在bin目录
同Reflector反编译之,可以看到其事件的实现
[Clsid("{bdd1f04b-858b-11d1-b16a-00c0f0283628}"), DesignTimeVisible(true), DefaultEvent("BeforeLabelEdit")]
public class AxListView : AxHost
{
// Events
public event ListViewEvents_AfterLabelEditEventHandler AfterLabelEdit;
public event ListViewEvents_BeforeLabelEditEventHandler BeforeLabelEdit;
public event EventHandler ClickEvent;
public event ListViewEvents_ColumnClickEventHandler ColumnClick;
public event EventHandler DblClick;
public event ListViewEvents_ItemCheckEventHandler ItemCheck;
public event ListViewEvents_ItemClickEventHandler ItemClick;
public event ListViewEvents_KeyDownEventHandler KeyDownEvent;
public event ListViewEvents_KeyPressEventHandler KeyPressEvent;
public event ListViewEvents_KeyUpEventHandler KeyUpEvent;
public event ListViewEvents_MouseDownEventHandler MouseDownEvent;
public event ListViewEvents_MouseMoveEventHandler MouseMoveEvent;
public event ListViewEvents_MouseUpEventHandler MouseUpEvent;
public event ListViewEvents_OLECompleteDragEventHandler OLECompleteDrag;
public event ListViewEvents_OLEDragDropEventHandler OLEDragDrop;
public event ListViewEvents_OLEDragOverEventHandler OLEDragOver;
public event ListViewEvents_OLEGiveFeedbackEventHandler OLEGiveFeedback;
public event ListViewEvents_OLESetDataEventHandler OLESetData;
public event ListViewEvents_OLEStartDragEventHandler OLEStartDrag;
// Fields
private ListViewEvents_AfterLabelEditEventHandler AfterLabelEdit;
private ListViewEvents_BeforeLabelEditEventHandler BeforeLabelEdit;
private EventHandler ClickEvent;
private ListViewEvents_ColumnClickEventHandler ColumnClick;
private AxHost.ConnectionPointCookie cookie;
private EventHandler DblClick;
private AxListViewEventMulticaster eventMulticaster;
private ListViewEvents_ItemCheckEventHandler ItemCheck;
private ListViewEvents_ItemClickEventHandler ItemClick;
private ListViewEvents_KeyDownEventHandler KeyDownEvent;
private ListViewEvents_KeyPressEventHandler KeyPressEvent;
private ListViewEvents_KeyUpEventHandler KeyUpEvent;
private ListViewEvents_MouseDownEventHandler MouseDownEvent;
private ListViewEvents_MouseMoveEventHandler MouseMoveEvent;
private ListViewEvents_MouseUpEventHandler MouseUpEvent;
private IListView ocx;
private ListViewEvents_OLECompleteDragEventHandler OLECompleteDrag;
private ListViewEvents_OLEDragDropEventHandler OLEDragDrop;
private ListViewEvents_OLEDragOverEventHandler OLEDragOver;
private ListViewEvents_OLEGiveFeedbackEventHandler OLEGiveFeedback;
private ListViewEvents_OLESetDataEventHandler OLESetData;
private ListViewEvents_OLEStartDragEventHandler OLEStartDrag;
}谢谢啊。
FieldInfo f = (typeof(Axmscomctl.AxListView)).GetField("BeforeLabelEdit",BindingFlags.Instance| BindingFlags.NonPublic);
object key =f.GetValue(this.axListView1);
Delegate b=(Axmscomctl.ListViewEvents_BeforeLabelEditEventHandler)key;
foreach(Delegate g in b.GetInvocationList())
{
MessageBox.Show(g.Method.Name);
}
谢谢大家。