C# 试图理解microsoft教程中有关Word加载项的特定部分代码

C# 试图理解microsoft教程中有关Word加载项的特定部分代码,c#,ms-word,vsto,C#,Ms Word,Vsto,这是完整的代码。据我所知,它应该启动外接程序,检查文档是否可用。我难以理解的是: private void ThisAddIn_Startup(object sender, System.EventArgs e) { this.Application.DocumentOpen += new Word.ApplicationEvents4_DocumentOpenEventHandler(WorkWithDocument); ((Word.Applicati

这是完整的代码。据我所知,它应该启动外接程序,检查文档是否可用。我难以理解的是:

private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
    this.Application.DocumentOpen +=
           new Word.ApplicationEvents4_DocumentOpenEventHandler(WorkWithDocument);

    ((Word.ApplicationEvents4_Event)this.Application).NewDocument +=
            new > Word.ApplicationEvents4_NewDocumentEventHandler(WorkWithDocument);  
}

private void WorkWithDocument(Microsoft.Office.Interop.Word.Document Doc)
{
    try
    {
            Word.Range rng = Doc.Range(0, 0);
            rng.Text = "New Text";
            rng.Select();
    }
    catch (Exception ex)
    {
            // Handle exception if for some reason the document is not available.
    }
}
我不明白的是
(Word.ApplicationEvents4\u事件)
就在
这个.Application
之前。这是类似于typecast的事件吗?我不知道

它是一个接口,因此代码正在将
此.Application
投射到该接口

相关文档对此进行了解释:

这是一个从所需的COM类派生的.NET接口 通过托管代码实现与相应COM的互操作性 对象使用此派生接口访问所有方法、属性和 COM对象的事件成员但是,如果您选择了某个方法或事件 要在同一COM对象下使用相同名称的共享,请强制转换为 调用该方法的相应主接口,并强制转换为 连接到事件的最新事件界面。请参阅此 主题以获取有关COM对象的信息。有关 COM对象的方法和属性成员,请参阅应用程序。对于 有关COM对象的事件成员的信息,请参阅 ApplicationEvents4\u事件


除了欧文的回答之外:

ApplicationEvents4\u事件。新文档事件

在创建新文档时发生

因此,当打开文档时(从第一个事件订阅)以及创建新文档时(从第二个事件订阅),将调用WorkWithDocument方法

+=只订阅这些事件并告诉它们调用您的方法

((Word.ApplicationEvents4_Event)this.Application).NewDocument ...