C# Winform 自定义事件实战

avatar
作者
猴君
阅读量:2

在C#的WinForms中,自定义事件是一种强大的工具,它允许你创建自己的事件,从而在特定条件下通知订阅者。自定义事件通常用于封装业务逻辑,使代码更加模块化和易于维护。下面我将通过一个实战例子来展示如何在WinForms中创建和使用自定义事件。

步骤1: 创建事件源类

首先,我们创建一个类,这个类将负责触发我们的自定义事件。在这个例子中,我们将创建一个简单的温度监测器类,当温度超过阈值时,它会触发一个事件。

 

Csharp

1public class TemperatureMonitor 2{ 3    // 定义事件处理器,使用EventHandler<TEventArgs>,其中TEventArgs是事件参数类型 4    public event EventHandler<TemperatureChangedEventArgs> TemperatureChanged; 5 6    private double currentTemperature; 7 8    public TemperatureMonitor(double initialTemperature) 9    { 10        currentTemperature = initialTemperature; 11    } 12 13    // 模拟温度变化 14    public void UpdateTemperature(double temperature) 15    { 16        currentTemperature = temperature; 17        if (currentTemperature > 30) 18        { 19            // 触发事件 20            OnTemperatureChanged(new TemperatureChangedEventArgs(currentTemperature)); 21        } 22    } 23 24    // 内部方法,用于触发事件 25    protected virtual void OnTemperatureChanged(TemperatureChangedEventArgs e) 26    { 27        TemperatureChanged?.Invoke(this, e); 28    } 29} 30 31// 定义事件参数类 32public class TemperatureChangedEventArgs : EventArgs 33{ 34    public double Temperature { get; } 35 36    public TemperatureChangedEventArgs(double temperature) 37    { 38        Temperature = temperature; 39    } 40}

步骤2: 创建事件监听器

接下来,我们创建一个WinForms窗体,这个窗体会监听温度变化事件,并在事件发生时更新UI。

 

Csharp

1public partial class MainForm : Form 2{ 3    private TemperatureMonitor monitor; 4 5    public MainForm() 6    { 7        InitializeComponent(); 8        monitor = new TemperatureMonitor(25); 9        monitor.TemperatureChanged += Monitor_TemperatureChanged; 10    } 11 12    private void Monitor_TemperatureChanged(object sender, TemperatureChangedEventArgs e) 13    { 14        // 更新UI 15        this.Invoke((MethodInvoker)delegate 16        { 17            labelTemperature.Text = $"Current Temperature: {e.Temperature}°C"; 18        }); 19    } 20 21    private void buttonUpdate_Click(object sender, EventArgs e) 22    { 23        // 模拟温度更新 24        monitor.UpdateTemperature(32); 25    } 26}

步骤3: 测试事件

在你的主窗体上放置一个按钮和一个标签,然后连接事件处理函数。当按钮被点击时,模拟温度的更新,触发事件,然后在标签上显示新的温度值。

步骤4: 运行和调试

运行你的应用程序,点击按钮以触发温度更新,观察标签是否正确显示了温度超过阈值的消息。

在实际项目中,你可能会有更复杂的事件和事件参数,但基本原理是一样的。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!