据我目前的了解是:
1、在.NET框架的System命名空间中,定义了EventHandler委托:
public delegate void EventHandler(object sender, EventArgs e); 2、在System.Windows.Forms.Button类中,有类似如下的代码:
public class System.Windows.Forms.Button : WebControl, IPostBackEventHandler
{
public event EventHandler Click;
protected virtual void OnClick(EventArgs e) {
if (this.Click != NULL) Click(this, e);
}
}3、我们在使用的类中,通过类似如下的代码注册事件:
this.btn.Click += new EventHandler(this.Button_Click);
并在Button_Click()中写具体的操作代码。由上可知,只要调用Button的OnClick()方法,即可执行Button_Click()中的操作代码。
但问题是:当用户点击Button按钮时,操作系统是如何将消息传递给应用程序,
并最终触发OnClick()方法的呢?
另:上面认识正确与否,也敬请指教,谢谢!
1、在.NET框架的System命名空间中,定义了EventHandler委托:
public delegate void EventHandler(object sender, EventArgs e); 2、在System.Windows.Forms.Button类中,有类似如下的代码:
public class System.Windows.Forms.Button : WebControl, IPostBackEventHandler
{
public event EventHandler Click;
protected virtual void OnClick(EventArgs e) {
if (this.Click != NULL) Click(this, e);
}
}3、我们在使用的类中,通过类似如下的代码注册事件:
this.btn.Click += new EventHandler(this.Button_Click);
并在Button_Click()中写具体的操作代码。由上可知,只要调用Button的OnClick()方法,即可执行Button_Click()中的操作代码。
但问题是:当用户点击Button按钮时,操作系统是如何将消息传递给应用程序,
并最终触发OnClick()方法的呢?
另:上面认识正确与否,也敬请指教,谢谢!
然后打开Debug->CallStack
在CallStack点右键选Show External Code 还是比较复杂的
我记得程序员2003或是2001年有一篇文章介绍过
[DllImport("user32.dll", CharSet=CharSet.Auto)]
public static extern int SendMessage(IntPtr hWnd, int msg, int wParam, int lParam);
对一个control发送一个自定义的消息重写control的WndProc方法加入自定义消息的处理参考
http://www.aisto.com/roeder/dotnet/CommandBar的代码