如何在C#中引发事件?

Joh*_*ith 1 c# events winforms

我对C#中控件应用程序事件的理解:

  1. 创建一个与订阅者类中的事件处理程序方法具有相同签名的委托.

  2. 声明基于此委托的事件

  3. 提升事件
    我对这一步的理解是:它只是一个包装函数,其中参数被传递给事件以调用事件指向的事件处理函数.

因此,引发事件只是调用发布类中的包装函数.

现在,当我创建一个非常简单的Windows窗体应用程序时,我无法应用这个一般概念.

只需一个按钮即可考虑使用WinForms应用程序.

// registering statement
Button1.Click += new EventHandler (this.button1_click)
Run Code Online (Sandbox Code Playgroud)
  1. 我可以确定第一步.它是预定义的System.EventHandler委托.

  2. 按钮的单击事件也是预定义的.没问题.

  3. 事件提升步骤:此处我无法在控制台应用程序和Windows应用程序之间建立连接.

代码保存在哪里实际上为WinForms应用程序提升事件?我们似乎不必编码.

我理解当有人"点击"按钮时会引发click事件,但是如何在WinForms应用程序的C#代码中实现?

编译器"只是"知道按钮的Click事件是指有人点击某个按钮,因此应该引发一个事件?

如何提出点击事件?参数如何传递给事件?

Sco*_*ain 5

Control级保护了函数调用WndProc,当操作系统需要告诉程序的东西它会生成一个Message对象并将其传递到WndProc功能.

WndProc函数然后查看消息并查看它是什么类型的消息,如果它是" 鼠标左键按钮 "消息它运行该OnClick方法,其中正确的参数被解析出Message传入的对象WndProc.

OnClick方法将事件提升给订阅者.

从.NET的结果来看: