从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和谷歌搜索任何指针,但除了如何创建和保存属性之外没有任何其他信息,这正是我正在做的。
我也尝试使用ItemProperties
和UserProperties
,两者都给出了相同的结果,并将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;
}
我仍然有兴趣知道这是否是最好的方法。这是一个很大的形式区域,因此手动设置所有内容都很费力,但到目前为止我还没有找到更好的方法。