我正在学习 C#。我正在浏览语言的事件和代表部分。我正在开发一个用于自学的 WinForms 应用程序。我尝试深入了解按钮及其工作原理。我发现了以下内容:
1) 我的默认 Form1.cs 文件中有一行
public partial class Form1 : Form
。这是一个部分类。2) 我还有一个 Form1.Designer.cs 类文件,它有一行
partial class Form1
。现在 1) 和 2) 中提到的文件组合成一个完整的类。3)From1.Designer.cs文件有很多最终创建按钮对象的语句。它还有一个我特别感兴趣的声明:
this.btn_BaseBuildLocation.Click += new System.EventHandler(this.btn_BaseBuildLocation_Click);
此语句将自定义函数添加到委托 Click。此委托在 Control 类 (System.Windows.Forms.dll) 中声明如下:
public event EventHandler Click;
4) EventHandler 是在 System.EventHandler.cs (mscorlib.dll) 中定义的委托。
5) Button 类继承了 Control 类,因此可以访问 Click EventHandler。
6) Button 类一旦知道有人点击了它,就拥有处理流程的所有逻辑。我查看了 Mono 中使用的 Button 类以了解内部细节。我对几乎所有我想学习的课程都这样做。
7) 这一切都非常美丽。但困扰我的是,我不知道 Button 对象是如何知道它被点击的。
8) 我浏览了 VC++ 以及它如何处理事件。我发现了很多关于消息循环、事件队列等的信息......
问题:
1) VC++ 处理事件的方式是否与.NET 相同?
2)如果是这样,有没有办法调查这些细节?
任何帮助,将不胜感激。谢谢。