Visual Studio 2019中C#的button_click方法的调用位置在哪里?
问题解答
1. 事件绑定代码的位置
你找不到显式调用是因为这个方法不是被直接调用的,而是通过.NET的事件委托机制绑定到按钮的Click事件上的,绑定逻辑存放在你没注意到的自动生成文件里:
- 展开解决方案管理器里
Form1.cs的子节点,找到Form1.Designer.cs文件 - 打开后找到
InitializeComponent()方法,里面可以找到如下绑定代码:
this.button1.Click += new System.EventHandler(this.button1_Click);
你不会在代码里找到类似button1_Click(sender, e)的显式调用语句,方法的执行是由.NET运行时在按钮点击事件触发时主动调用的,这段代码的作用就是把button1_Click方法订阅到按钮的点击事件上,当用户点击按钮时,.NET运行时会自动触发Click事件,执行所有订阅了该事件的方法。
2. 和Java面向对象逻辑的对应
你熟悉的Java Swing里的ActionListener绑定逻辑和这个是类似的:
- Java里你给按钮
addActionListener的操作,对应C#里用+=给事件订阅委托方法的操作 - 区别在于.NET WinForm会把自动生成的事件绑定代码统一放到
Designer.cs文件里,不会污染你写业务逻辑的Form1.cs主文件,所以你在业务代码里看不到相关逻辑。
3. 可视化验证方式
你也可以通过Visual Studio的可视化界面查看绑定关系:
- 选中窗体设计器里的
button1按钮 - 打开右侧属性窗口,点击顶部的闪电形状的「事件」图标
- 在列表里找到
Click项,后面的文本框里显示的就是当前绑定的button1_Click方法,你可以在这里修改绑定的方法,或者删除绑定。
内容的提问来源于stack exchange,提问作者willem waterman
相关产品推荐
相关产品推荐

