私は Outlook アドインを作成していて、保存された後 (いつ) に予定のデータを使用して何か (ここでは関係ありません) を実行したいと考えています。
(私は Outlook-Addins を初めて使用します)メソッドを登録できるAfterWriteイベントが
あることがわかりました。また、 ApplicationにはItemLoadイベントがあります。
私の最初のエフォードは次のようなものでした:
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!");
}
問題は、イベントを発生させた Appointment のデータにアクセスする方法がわからないことです。
Application.ItemLoadは、 Appointmentにキャストできる 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;
}
}
しかし、イベントは発生しません! 私は今とてもイライラしています