【发布时间】:2018-10-31 14:05:44
【问题描述】:
我发现InvokeOnClick 是在单击按钮时引发Click 事件的方法。
但我找不到在设计器代码中调用InvokeOnClick() 方法的代码。
我是不是搞错了概念?
如果是,那么当我们点击按钮控件时,Click事件实际上是如何被调用的?
public class Control
{
public event EventHandler Click{
add
{
this.Events.AddHandler(Control.EventClick, (Delegate) value);
}
remove
{
this.Events.RemoveHandler(Control.EventClick, (Delegate) value);
}
}
protected void InvokeOnClick(Control toInvoke, EventArgs e)
{
toInvoke?.OnClick(e);
}
}
【问题讨论】:
-
你为什么要问? Windows 窗体基础结构负责处理这一点。一般来说,您需要做的就是连接事件处理程序并从这些处理程序调用您的代码。如果你真的想知道发生了什么,把一个简单的 WinForms 应用程序放在一起,在上面放一个按钮,编写一个 Click 事件处理程序,在其中放置一个断点,单击,然后查看堆栈。右键单击堆栈窗口并选择“显示外部代码”。您将看到所有使您的点击处理程序被调用的 Windows 窗体 goop
-
@Flydog57 我目前正在研究代表和活动。我想知道.NET 是如何处理这些事件的。感谢您的提示。