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}}。这是某种类似事件的类型转换吗?我不知道。
答案 0 :(得分:1)
The documentation states它是一个接口,因此代码将this.Application
强制转换为该接口。
Application的文档解释了这一点:
这是一个从需要的COM coclass派生的.NET接口 通过托管代码实现与相应COM的互操作性 宾语。使用此派生接口访问所有方法,属性和 COM对象的事件成员。 但是,如果您使用某种方法或事件 想在相同的COM对象下使用相同名称的共享,强制转换为 调用方法的相应主接口,并强制转换为 连接事件的最新事件界面。请参阅此 有关COM对象的信息的主题。有关的信息 COM对象的方法和属性成员,请参阅_Application。对于 有关COM对象的事件成员的信息,请参阅 ApplicationEvents4_Event。
答案 1 :(得分:1)
除了欧文的回答:
ApplicationEvents4_Event.NewDocument事件
在创建新文档时发生。
因此,在打开文档时(从第一个事件订阅)以及创建新文档时(从第二个事件订阅),将调用 WorkWithDocument 方法。
+ = 只是订阅这些事件并告诉他们调用您的方法。