Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Excel加载项编程_C#_Excel_Excel Addins - Fatal编程技术网

C# Excel加载项编程

C# Excel加载项编程,c#,excel,excel-addins,C#,Excel,Excel Addins,我试图理解使用C#编写excel外接程序。对于这样的项目,有一个名为ThisAddIn.cs的文件,它处理所有事件,如WorkBookOpen、WorkBookClose等。 处理此类事件的代码如下所示: this.Application.WorkbookOpen += new Excel.AppEvents_WorkbookOpenEventHandler(Application_WorkbookOpen); 这看起来很简单,但我不明白为什么它使用+=符号来赋值,而不仅仅是=符号。 +=符号

我试图理解使用C#编写excel外接程序。对于这样的项目,有一个名为ThisAddIn.cs的文件,它处理所有事件,如WorkBookOpen、WorkBookClose等。 处理此类事件的代码如下所示:

this.Application.WorkbookOpen += new Excel.AppEvents_WorkbookOpenEventHandler(Application_WorkbookOpen);
这看起来很简单,但我不明白为什么它使用+=符号来赋值,而不仅仅是=符号。 +=符号在这种类型的赋值中表示什么。它是与C#有关还是特定于AddIn development。我对C#也很陌生。 任何帮助都将不胜感激

谢谢。

+=是用于添加事件处理程序的C#约定。那里的代码意味着您正在将应用程序\u WorkbookOpen函数连接到WorkbookOpenEvent


这是C#中的一个奇怪约定。要知道的是:

  • 委托是表示调用一个或多个方法的能力的对象
  • 两个委托的和是第三个委托,当调用它时,调用它的和
  • 当事件发生时,将调用与该事件关联的委托
例如,如果您有:

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#编程8年了,我从来不知道这超出了“连接事件处理程序”的语法范围。我发誓我每周都会发现这种语言的一些新的方面。。。