Ich schreibe ein Outlook-Add-In und möchte etwas (nicht relevant hier) mit den Daten eines Termins nach (wann) es gespeichert wurde.
(ich bin neu in Outlook-Addins)
so fand ich, dass es ein AfterWrite Ereignis gibt, wo ich eine Methode registrieren kann. Und es gibt eine ItemLoad Ereignis auf Anwendung.Ereignis nach dem Speichern eines Outlook-Termins
so meine erste Efford war so etwas wie diese:
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!");
}
Das Problem ist, dass ich weiß nicht, wie man die Daten des Termins zu bekommen, die das Ereignis ausgelöst. Application.ItemLoad registriert eine Funktion, die ein Objekt erhält, das in einen Termin umgewandelt werden kann.
AfterWrite nicht. Ich würde so etwas wie dies mag:
public void afterWrite(Outlook.AppointmentItem aitem)
{
// do something with the data from the Appointment
MessageBox.Show(aitem.Subject + " was written!");
}
Ich fürchte, dass ich in der völlig falsche Richtung suche ..
* sorry, wenn mein Englisch ist ein Durcheinander - es ist nicht meine Muttersprache
edit:
ich versuchte sogar ein Konstrukt wie folgt aus:
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;
}
}
aber Ereignis wird nicht gefeuert! ich bin jetzt sehr frustriert
Was ist der "** Constants.FOLDERNAME **", auf den sich Ihr C# -Code bezieht? Ohne zu wissen, worauf sich diese Konstante bezieht, kann ich Ihren Code nicht erstellen. –
'private MAPIFolder GetCalendarFolder() {var app = neue Microsoft.Office.Interop.Outlook.Application(); NameSpace nameSpace = app.GetNamespace ("MAPI"); Rückgabe nameSpace.GetDefaultFolder (OlDefaultFolders.olFolderCalendar); } '** Verwenden Sie diese Methode, um das Outlook.MAPIFolder-Standardobjekt abzurufen ** –