尝试从有关Word加载项的Microsoft教程中了解代码的特定部分

时间:2017-08-09 12:27:29

标签: c# ms-word vsto

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_Event)this.Application).NewDocument ...

我不明白的是(Word.ApplicationEvents4_Event) this.Application之前的{{1}}。这是某种类似事件的类型转换吗?我不知道。

2 个答案:

答案 0 :(得分:1)

The documentation states它是一个接口,因此代码将this.Application强制转换为该接口。

Application的文档解释了这一点:

  

这是一个从需要的COM coclass派生的.NET接口   通过托管代码实现与相应COM的互操作性   宾语。使用此派生接口访问所有方法,属性和   COM对象的事件成员。 但是,如果您使用某种方法或事件   想在相同的COM对象下使用相同名称的共享,强制转换为   调用方法的相应主接口,并强制转换为   连接事件的最新事件界面。请参阅此   有关COM对象的信息的主题。有关的信息   COM对象的方法和属性成员,请参阅_Application。对于   有关COM对象的事件成员的信息,请参阅   ApplicationEvents4_Event。

答案 1 :(得分:1)

除了欧文的回答:

https://msdn.microsoft.com/en-us/library/microsoft.office.interop.word.applicationevents4_event.newdocument(v=office.14).aspx

ApplicationEvents4_Event.NewDocument事件

在创建新文档时发生。

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

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