带有 FormRegion 的 VSTO Outlook 约会 - 删除收件人时保存异常

Posted

技术标签:

【中文标题】带有 FormRegion 的 VSTO Outlook 约会 - 删除收件人时保存异常【英文标题】:VSTO Outlook Appointment with FormRegion - save exception when recipient removed 【发布时间】:2019-07-15 08:38:01 【问题描述】:

我为 Outlook 约会项目创建了一个相邻的表单区域(使用 Visual Studio 2019 for Office 2019),并且我在该表单上有输入,我从中将值捕获到 UserProperties 中。

一切正常,直到我添加了一些收件人,发送了会议请求,再次打开它,删除了收件人,然后尝试发送更新。

问题在于,在表单区域的关闭事件中,我检索所有输入字段的值,将它们存储在 UserProperties 中,然后触发项目的 .Save() 方法,这会引发异常。 发生这种情况时,我的 UserPropery 值不会保存,但约会正文和收件人列表确实会保存。 在删除约会项目时,save 方法也会抛出异常,这是可以理解的。我将它包装在 try..catch 中。

我的代码示例:

private void AdditionalAppointmentInfo_FormRegionClosed(object sender, System.EventArgs e)
    
        if (customItem) //In the FormRegionShowing Event, I check for UserProps to see if this is an item created by this add-in
        
            try
            
                item.UserProperties["MyUserProperty"].Value = MyTextBox.Text;
                item.Save(); //Throws exception here when a recipient gets removed.
            
            catch (System.Exception ex)
        
        else
        
            try
            
                item.UserProperties.Add("IsCustomItem", OlUserPropertyType.olText).Value="1"; //set a property to indicate that this item was created using this add-in
                item.UserProperties.Add("MyUserProperty", OlUserPropertyType.olText).Value = MyTextBox.Text;
            
            catch (System.Exception)

        
    

我可以理解约会项目被删除时的例外情况,但当您删除收件人时则不会。 因此,虽然 UserProperties 适用于我的预期目的,但如果您希望 FormRegion 控件的值保持不变,那么使用它是否正确?还是有其他方法可以存储持久的用户数据而无需手动触发保存方法?

【问题讨论】:

您从哪里获得代码示例中使用的item 对象? 它在 FormRegionShowing 事件中被初始化,如下所示:item=(AppointmentItem)this.OutlookItem; 【参考方案1】:

您必须使用 OutlookItem 属性来获取 Outlook 项目。

【讨论】:

您是否在其他事件处理程序中遇到任何错误?你得到了哪个例外? 它只是说:'该项目无法保存',而删除时的异常说:'该项目已被删除或移动' 我建议选择另一个事件处理程序。尝试使用docs.microsoft.com/en-us/office/vba/api/…

以上是关于带有 FormRegion 的 VSTO Outlook 约会 - 删除收件人时保存异常的主要内容,如果未能解决你的问题,请参考以下文章

vsto + 区分附件

如何对无法加载的 VSTO 插件进行故障排除?

VSTO Word 加载项:内容控制嵌套

带有命名插座子组件的Angular 5问题

VSTO是啥

VSTO 系列(01)- Excel VSTO 开发入门