【发布时间】:2012-07-21 13:42:16
【问题描述】:
我正在编写 Outlook 加载项,并希望在保存约会后(何时)使用约会数据做一些事情(此处不相关)。
(我是 Outlook 插件的新手)
所以我发现有一个 AfterWrite 事件,我可以在其中注册一个方法。
Application 上有一个 ItemLoad 事件。
所以我的第一个 Efford 是这样的:
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
// ...
this.Application.ItemLoad +=
new Outlook.ApplicationEvents_11_ItemLoadEventHandler(atItemLoad);
}
public void atItemLoad(Object item)
{
Outlook.AppointmentItem aitem = item as Outlook.AppointmentItem;
if (aitem != null)
{
aitem.AfterWrite +=
new Outlook.ItemEvents_10_AfterWriteEventHandler(afterWrite);
}
}
public void afterWrite()
{
// Who was written?
MessageBox.Show("it was written!");
}
问题是,我不知道如何获取触发事件的约会数据。
Application.ItemLoad 注册了一个获取对象的函数,该对象可以转换为 Appointment。
AfterWrite 不会。我想要这样的东西:
public void afterWrite(Outlook.AppointmentItem aitem)
{
// do something with the data from the Appointment
MessageBox.Show(aitem.Subject + " was written!");
}
我担心我的研究方向完全错误..
*对不起,如果我的英语一团糟-这不是我的母语
编辑:
我什至尝试过这样的构造:
private List<AppointmentEventHolder> holderList = new List<AppointmentEventHolder>();
internal class AppointmentEventHolder
{
private Outlook.AppointmentItem aitem = null;
public AppointmentEventHolder(Outlook.AppointmentItem item)
{
aitem = item;
}
public void onWrite()
{
MessageBox.Show("write: " + aitem.Subject);
}
}
public void atItemLoad(Object item)
{
Outlook.AppointmentItem aitem = item as Outlook.AppointmentItem;
if (aitem != null)
{
AppointmentEventHolder aHolder = new AppointmentEventHolder(aitem);
holderList.Add(aHolder);
aitem.AfterWrite += aHolder.onWrite;
}
}
但事件不会被触发! 我现在很沮丧
【问题讨论】:
标签: c# .net events outlook-addin