跳转至

事件的基本使用(+= / -=)#

来源D:\study\C#1\WinForm\stu0804\事件使用stu0804\练习\WinForms学习笔记.md


1. 什么是事件#

事件就是「某个操作发生时的通知」。比如点击按钮、按键盘、窗口加载等。

事件的三要素#

// 1. 事件提供者:控件(如 Button)
// 2. 事件:控件上发生的动作(如 Click)
// 3. 事件处理器:事件发生后要执行的代码(方法)

事件处理方法的签名#

private void 方法名(object sender, EventArgs e)
{
    // 这里写事件触发后要执行的代码
}
  • sender是谁触发了这个事件(object 类型,通常需要强转成具体控件类型)
  • EventArgs e:事件携带的额外信息(键盘事件里用它来获取按了哪个键)

2. 订阅与取消事件#

// 订阅事件(绑定处理方法)
btnTest.Click += new EventHandler(btnTest_Click);

// 取消订阅(解除绑定,之后点击不再触发)
btnTest.Click -= new EventHandler(btnTest_Click);

💡 += 可以绑定多个方法,触发时按顺序执行;-= 只移除指定的那个。

3. 完整示例#

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    // 事件处理方法:点击按钮弹出提示
    private void btnTest_Click(object sender, EventArgs e)
    {
        MessageBox.Show("按钮被点击了");
    }

    // 取消绑定
    private void button1_Click(object sender, EventArgs e)
    {
        this.btnTest.Click -= new EventHandler(this.btnTest_Click);
    }

    // 重新绑定
    private void button2_Click(object sender, EventArgs e)
    {
        this.btnTest.Click += new System.EventHandler(this.btnTest_Click);
    }
}

4. 常用事件的绑定方式#

// 按钮点击事件
button1.Click += new EventHandler(button1_Click);

// 窗体加载事件(窗体打开时自动触发)
this.Load += new EventHandler(Form1_Load);

// 键盘释放事件(松开按键时触发)
button3.KeyUp += new KeyEventHandler(button3_KeyUp);

// 文本变化事件(输入内容时触发)
textBox1.TextChanged += new EventHandler(textBox1_TextChanged);

5. 设计器绑定 vs 代码绑定#

方式 做法 特点
设计器绑定 属性窗口 → 闪电图标 → 双击事件 自动生成方法,代码写在 Designer.cs
代码绑定 控件.事件 += 方法 灵活,可动态添加/移除

💡 学习阶段建议都用代码绑定,能清楚理解事件的机制;实际开发常用设计器绑定。


相关笔记#