You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在移动Outlook MailItem后选中该邮件项?

在C# VSTO Outlook插件中移动MailItem后选中目标邮件的问题

我需要在C# VSTO Outlook插件中将MailItem移动到指定文件夹,已持有目标文件夹olFld的引用和有效的entryId字符串,尝试了以下代码:

olNS = olFld.Session as Outlook.NameSpace;
//获取目标邮件项
olMailItem = olNS.GetItemFromID(entryId, olFld.StoreID) as Outlook.MailItem;
//移动到目标文件夹
selMailItem = olMailItem.Move(olFld) as Outlook.MailItem;

olApp = selMailItem.Application as Outlook.Application;
olExp = olApp.ActiveExplorer() as Outlook.Explorer;

olExp.ClearSelection();

if (olExp.IsItemSelectableInView(selMailItem)) 
    olExp.AddToSelection(selMailItem);

但IsItemSelectableInView始终返回false,请问有没有方法在移动MailItem后选中它?

编辑更新

我认为这是时序问题,于是为Explorer添加SelectionChange事件并调用ClearSelection:

olNS = olFld.Session as Outlook.NameSpace;
//获取目标邮件项
olMailItem = olNS.GetItemFromID(entryId, olFld.StoreID) as Outlook.MailItem;
//移动到目标文件夹
selMailItem = olMailItem.Move(olFld) as Outlook.MailItem;

olApp = selMailItem.Application as Outlook.Application;
olExp = olApp.ActiveExplorer() as Outlook.Explorer;
//新增代码*******************
olExp.SelectionChange += OlExp_SelectionChange;
//仅在此处清除选中状态
olExp.ClearSelection();

事件处理方法代码如下:

if (olExp.Selection.Count != 0)
{
    olExp.SelectionChange -= OlExp_SelectionChange;
    olExp.ClearSelection();

    if (olExp.IsItemSelectableInView(selMailItem))
        olExp.AddToSelection(selMailItem);

    if (selMailItem != null) ReleaseComObject(selMailItem);
    if (olExp != null) ReleaseComObject(olExp);
}

看起来ClearSelection会将选中计数设为0,但Outlook会因移动操作自动选中其他内容(而非被移动的邮件),之后上述代码会将选中项改为目标邮件。但这种方法像是临时 workaround,代码和UI表现都不够优雅。

基于回答评论的更新

以下方法似乎为Outlook提供了足够的UI更新时间,能够解决问题:

System.Windows.Threading.Dispatcher.CurrentDispatcher.InvokeAsync(new Action(() =>
{
    olExp.ClearSelection();

    if (olExp.IsItemSelectableInView(selMailItem))
        olExp.AddToSelection(selMailItem);
}));

内容的提问来源于stack exchange,提问作者darbid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 12:26:07