Outlook在Property_Change事件后添加get项目
本文关键字:添加 get 项目 事件 Change Property Outlook | 更新日期: 2023-09-27 18:02:41
正如标题所示,我正在寻找一种方法来获取触发事件的Item。
我在Application_ItemLoad事件中绑定Property_Change事件,其中我有一个对象Item,似乎我不能使用。
在Property_Change被触发之后,我需要触发事件的Item来调用我的函数。有办法得到这个吗?(我知道我可以通过ActiveExplorer获得当前打开的项目,但如果项目在主窗口中修改,我得到null)。
代码:ThisAddIn.cs
private Explorer _Explorer;
private List<WrapperItem> list = new List<WrapperItem>;
private void ThisAddIn_Startup(object sender, System.EventArgs e){
_Explorer = this.Application.ActiveExplorer();
_Explorer.SelectioNChange += _Explorer_SelectionChange;
}
void _Explorer_SelectionChange()
{
list.Clear();
foreach (MailItem mail in _Explorer.Selection)
{
list.Add(new WrapperItem(mail));
}
}
您正在为特定项目设置事件接收器,对吗?你的代码是什么?
如果您正在跟踪来自多个对象的事件,经验法则是创建您自己的包装器类,该包装器类将包含指向引发事件的对象的指针,并在同一个包装器类中实现事件处理程序。这样,当事件触发时,您将知道是哪个对象引发了它。
一个示例包装器(在我的脑海中)看起来像
public class MailItemWrapper
{
public MailItem item;
public MailItemWrapper(MailItem OutlookItem)
{
item = OutlookItem;
item.PropertyChange += new System.EventHandler(PropertyChangeHandler);
}
private PropertyChangeHandler(string Name)
{
MessageBox.Show(string.Format("Property named {0} changed on item {1}", name, item.Subject))
}
}