如何在Outlook 2010中刷新阅读窗格内容

如何在Outlook 2010中刷新阅读窗格内容,outlook,vsto,outlook-addin,outlook-2010,outlook-redemption,Outlook,Vsto,Outlook Addin,Outlook 2010,Outlook Redemption,我们使用赎回工具以真实内容填充存根邮件。在对所选项目调用RDOMail.Import(…)后,我们使用关闭并重新打开outlook中的预览(阅读)窗格 m_Explorer.ShowPane(MSOutlook.OlPane.olPreview,false); m_Explorer.ShowPane(MSOutlook.OlPane.olPreview,true); 此方法在Outlook 2007中运行良好 但在Outlook 2010中,程序刷新尝试(关闭/打开阅读窗格,取消选择/选择更新

我们使用赎回工具以真实内容填充存根邮件。在对所选项目调用
RDOMail.Import(…)
后,我们使用关闭并重新打开outlook中的预览(阅读)窗格

m_Explorer.ShowPane(MSOutlook.OlPane.olPreview,false);
m_Explorer.ShowPane(MSOutlook.OlPane.olPreview,true);
此方法在Outlook 2007中运行良好

但在Outlook 2010中,程序刷新尝试(关闭/打开阅读窗格,取消选择/选择更新的项目)根本不起作用。Outlook 2010仍显示旧版本

有人有什么提示或可能的解决办法吗

非常感谢。最后,我们解决了它

解决办法是

1) 删除要更新的项
context.removietem(TargetData.EntryID)(我们在RDOMessage、MailItem、RDOFolder和MAPIFolder上使用了一些抽象。但我认为,背后的原理非常清楚

2) 添加新项(
WithComCleanup
来自项目)

使用(var msg=RDOSession.Resource.GetMessageFromMsgFile(pathToMSG)
.WithComCleanup())
{ 
msg.Resource.Move(context.RDOFolder);
msg.Resource.Save();
}
3) 将ItemAdd处理程序附加到RDOFolder或MAPIFolder,请注意,items集合必须在类级别声明! 为什么要添加项目?因为无论是
RDOMail.OnModified
还是
RDOMail.OnMoved
都没有提供邮件项检索所需的有效EntryID。我们在抓取时编写自定义用户属性,并在
ItemAdd
中读取它们

/。。。
m_OwnItems=m_Folder.Items
m_OwnItems.ItemAdd+=新的MSOutlook.ItemsEvents_ItemAddEventHandler(Items_ItemAdd);
//...
无效项\u项添加(对象项)
{
//Outlook 2010:14版,只有Outlook 2010支持“ClearSelection”和“AddToSelection”`
如果(项目为MSOutlook.MailItem&&ApplicationController.Instance.ApplicationVersion.Major>=14)
{
var mail=Item作为MSOutlook.MailItem;
//检查添加的项目是否是使用GetMessageFromMsgFile添加的项目
//...
if(m_Explorer.IsItemSelectableInView(mail))
{
m_Explorer.ClearSelection();
m_Explorer.AddToSelection(邮件);
}
}    
}                        
4) 完成了!Outlook 2010的这种行为在整个开发过程中一直困扰着我们

  • 请记住,RDOMail.Move会返回新对象(就像OOM一样)

  • 由于您正在重新创建消息,因此其创建时间将更改


  • 你有没有试着给Close打电话?如果为我选择了项目,则会刷新内容。对于你的建议似乎是一个更简单的解决方案