gpt4 book ai didi

c# - WinForms Designer 自动创建的事件处理程序

转载 作者:行者123 更新时间:2023-11-30 19:33:44 28 4
gpt4 key购买 nike

我刚从 VB.NET 转到 C#。在 VB 中,要将事件处理程序连接到 Sub,我们使用 Handles 子句。

看起来,这在 C# 中不存在。

在创建一个带有按钮的简单应用程序后,我意识到 Window Forms Designer 自动为我的 button1_Click 函数创建了一个事件处理程序(在我双击它之后),在 Form1.Designer.cs 中使用以下代码:

this.button1.Click += new System.EventHandler(this.button1_Click);

但是在 VB 中,WinForms Designer 在我的类中的函数头中创建了 Handles 子句。

因此,C# 在设计器文件中创建默认的 EventHandler,而 VB 在控件所在的主类中创建。

这是正确的吗?我在这里遗漏了什么吗?

最佳答案

您是对的,因为在 C# 中没有类似于 VB.NET handles 子句(或相应的 WithEvents 变量装饰器)。这些只存在于 VB.NET 中,作为经典 VB 的遗留物,并且它们在使用中有开销(生成的 IL 实际上必须监视设置变量的所有位置,以便分离和附加 handles< 的所有函数 那个事件)。

如果您检查 VB.NET 窗体或控件的 IL,您实际上会发现为每个 WithEvents 变量 创建了一个属性,并且setter 负责从旧值(假设它非空)中删除所有实际处理程序并将它们附加到新值(假设它非空)。

VB.NET 中 C# 事件处理的模拟是 AddHandler 语句。

关于c# - WinForms Designer 自动创建的事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3070326/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com