5
我正在写一个Outlook加载项,并且希望在保存后(约会时)使用约会的数据执行某些操作(与此处不相关)。
(我是Outlook-Addins的新手)
所以我发现有一个AfterWrite事件,我可以注册一个方法。 还有一个ItemLoad事件应用程序。Outlook预约后的事件已保存
所以我的第一个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注册一个获取Object的函数,该函数可以投射到约会。
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#代码引用的“** Constants.FOLDERNAME **”? 不知道这个常量是指什么,我不能建立你的代码。 – 2013-09-17 12:04:04
'私人MAPIFolder GetCalendarFolder() {var app = new Microsoft.Office.Interop.Outlook.Application(); NameSpace nameSpace = app.GetNamespace(“MAPI”); return nameSpace.GetDefaultFolder(OlDefaultFolders.olFolderCalendar); }'**使用此方法获取默认的Outlook.MAPIFolder对象** – 2014-09-01 09:49:05