c# - Excel 添加编程

标签 c# excel excel-addins

我正在尝试了解使用 C# 编程的 excel 添加。对于这样的项目,有一个名为 ThisAddIn.cs 的文件,它处理所有事件,如 WorkBookOpen、WorkBookClose 等。 处理此类事件的代码是这样的 -

this.Application.WorkbookOpen += new Excel.AppEvents_WorkbookOpenEventHandler(Application_WorkbookOpen);

这看起来很简单,但我不明白为什么它使用 += 符号而不是 = 符号进行赋值。 += 符号在此类赋值中表示什么。它是与 C# 相关的还是特定于 AddIn 开发的。我对 C# 也很陌生。 任何帮助将不胜感激。

谢谢。

最佳答案

这是 C# 中的陌生约定之一。要知道的事情是:

  • 委托(delegate) 是一个对象,代表调用一个或多个方法的能力。
  • 两个委托(delegate)的总和是第三个委托(delegate),当调用它时,调用它的被加数。
  • 当事件发生时,将调用与该事件关联的委托(delegate)。

例如,如果您有:

static void M() { Console.WriteLine("Hello!"); }
static void N() { Console.WriteLine("Goodbye!"); }
...
Action foo = M;
foo(); // Hello!
Action bar = N;
bar(); // Goodbye!
Action sum = foo + bar;
sum(); // Hello! Goodbye!
foo += bar; // Same as foo = foo + bar
foo(); // Hello! Goodbye!

现在清楚为什么 += 表示“将此处理程序与事件相关联”了吗?

(顺便说一下,我以前写过很多 Excel C# 插件代码。)

关于c# - Excel 添加编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16246397/

相关文章:

c# - 部署 Excel DNA 应用程序

c# - 在 .NET 中调试和诊断锁传送问题

c# - PC XNA 游戏转换为 Xbox 360 - 巨大的性能问题

sql - 我如何使用excel生成一个大的更新sql语句?

vba - 发送具有多个 RangeToHTML 范围的电子邮件

javascript - 有没有办法在 Office.js Excel 插件中更改线条形状的颜色?

c# - Visual Studio 2017发布签名工具错误

c# - 如何从 autofac 容器解析依赖项(在嵌套 LifetimeScope 中注册)

C# 扩展方法未定义

excel - 如何使用 VBA 调整 Excel 中表格/ListObject 的大小