Loading

C#中的事件订阅运算符

+= 是C#中的事件订阅运算符(也可用于数值累加),在这个上下文中用于订阅事件

事件订阅语法

StateChanged += (s, e) => UpdateMainWindowVisuals();

这行代码的含义是:

1️⃣ 事件订阅

  • StateChanged 是窗口的一个事件(当窗口状态改变时触发,如最小化、最大化、正常)
  • += 表示添加一个事件处理程序
  • (s, e) => UpdateMainWindowVisuals() 是一个Lambda表达式,作为事件处理器

2️⃣ 参数说明

  • s (sender): 事件源对象,这里是 MainWindow
  • e (EventArgs): 事件参数,包含事件相关数据
  • => 后面是事件触发时要执行的代码

3️⃣ 等价的传统写法

// 使用 += Lambda表达式(现代写法)
StateChanged += (s, e) => UpdateMainWindowVisuals();

// 等价于传统的方法订阅(老式写法)
StateChanged += MainWindow_StateChanged;

private void MainWindow_StateChanged(object sender, EventArgs e)
{
    UpdateMainWindowVisuals();
}

4️⃣ 对应的取消订阅

// 取消订阅事件使用 -=
StateChanged -= (s, e) => UpdateMainWindowVisuals();

实际效果

在你选中的代码中:

StateChanged += (s, e) => UpdateMainWindowVisuals();    // 窗口状态改变时更新视觉
Activated += (s, e) => UpdateMainWindowVisuals();        // 窗口激活时更新视觉
Deactivated += (s, e) => UpdateMainWindowVisuals();      // 窗口失去焦点时更新视觉

这三行代码确保了当窗口状态发生任何变化时(最小化/最大化/激活/失去焦点),都会调用 UpdateMainWindowVisuals() 方法来更新窗口的视觉效果(如高对比度边框、标题栏按钮可见性等)。

posted @ 2026-02-07 15:58  老卫同学  阅读(19)  评论(0)    收藏  举报