C#Outlook表单区域 - 保存数据,用户属性?

时间:2016-12-01 12:31:23

标签: c# outlook-addin

从Outlook项目中保存表单区域数据的正确方法是什么(本例中为约会)?

我基本上要做的是将所有表单区域数据与outlook约会一起保存,因此打开以编辑表单区域的约会就像主要约会数据一样。

我已设法绑定到ItemSend事件,如下所示,设置我从填充的表单区域获取的项目的用户属性:

private void Application_ItemSend(object Item, ref bool Cancel)
{
    Outlook.AppointmentItem Appointment = Item as Outlook.AppointmentItem;
    Outlook.UserProperty MyProperty = Appointment.UserProperties.Add("form_region_control", Outlook.OlUserPropertyType.olText, false);
    MyProperty.Value = this.AFormRegionControl.Text;
    Appointment.Save();
}

但是,似乎这些用户属性实际上并未保存在任何地方。我是C#和Outlook的新手,而且我(也许是假的?)假设用户属性用于存储针对Outlook项目的自定义数据。

如果该假设是正确的,我如何在打开保存的项目时访问它们?或者,如果我不正确,获取此数据的正确方法是什么?

// Opening up an existing appointment, after it is saved with user props
if (appointment.UserProperties.Find("form_region_control") != null)
    // assign the property to the form control when opening an existing item??

上面总是返回null,所以我不知道如何访问用户属性......或者我可能没有正确保存它们?我已经通过MSDN和谷歌搜索任何指针,但除了如何创建和保存属性之外没有任何其他信息,这正是我正在做的。

我也尝试使用ItemPropertiesUserProperties,两者都给出了相同的结果,并将AddToFolderFields设置为true和false。

更新 因此,从Application对象上的ItemSend切换到Write事件并设置用户属性,我现在可以从FormRegionShowing中访问这些属性,并在FormRegion控件上手动设置属性:

private void Appointment_Write(ref bool Cancel)
{
    Outlook.ItemProperty MyProperty = this.appointment.ItemProperties.Add("AFormRegionControl", Outlook.OlUserPropertyType.olText, false);
    MyProperty.Value = this.AFormRegionControl.Text;
}

// and from within FormRegion_Showing ....
if (this.appointment.UserProperties.Find("AFormRegionControl") != null)
{
    MessageBox.Show(this.appointment.UserProperties.Find("AFormRegionControl").Value);
    this.AFormRegionControl.Text = this.appointment.UserProperties.Find("AFormRegionControl").Value;
}

我仍然有兴趣知道这是否是最好的方法。这是一个很大的形式区域,因此手动设置所有内容都很费力,但到目前为止我还没有找到更好的方法。

0 个答案:

没有答案