自从我开始学习 C# 以来,我看到了几种处理事件的方法。假设我有一个像这样的 XAML 按钮:
<Button x:Name="button" Content="Click me!"/>
鉴于此按钮,我可以通过多种方式连接点击事件:
修改按钮的
Click
属性,使其指向后面代码中的一个方法,例如:<Button x:Name="button" Content="Click me!" Click="button_Click"/>
然后将
button_Click
方法添加到代码中:private void button_Click(object sender, RoutedEventArgs e) { button.Content = "Ow >_<"; }
在后面的代码中通过委托(delegate)处理事件:
button.Click += delegate { button.Content = "Ow >_<"; };
在后面的代码中通过 lambda 表达式处理事件:
button.Click += (object sender, RoutedEventArgs e) => { button.Content = "Ow >_<"; };
鉴于这三种方法,我有几个问题:
- 这些方法之间的根本区别是什么。
- 是否有任何情况应该使用一种方法而不是另一种方法。我看到类型 1 主要用于 WPF 和 WinRT 应用程序,但其他两种我只在使用 Xamarin 时才真正看到。
最佳答案
- 不特定于 WPF 或 WinRT,在 GUI 设计器中的 .NET 中,单击控件以连接默认事件或单击 visual studio 的属性窗口中的事件是典型的。大多数时候,这就是您将事件连接到控件的方式。当您在运行时创建动态控件时,您通常使用 2. 或 3. 连接事件,事件本身并没有什么不同,但是它们在应用程序生命周期中创建的阶段对 2 有很大的影响..和 3..
关于C# 事件处理方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32555701/