【问题标题】:Outlook 2013 Form Region and the Delete KeyOutlook 2013 窗体区域和删除键
【发布时间】:2015-03-27 23:58:33
【问题描述】:

所以,我终于不得不处理这个烦人的问题了。似乎这是一个已知的“错误”,似乎没有很好的解决方法。我想知道什么似乎是最好的解决方法。

一点信息。在我的表单区域中,我有一个 Winform 控件和一个 WPF 控件。用户不能在 Winform 控件上执行某些组合键(Ctrl-A 全选,Delete 键删除电子邮件而不是突出显示的文本),但在 WPF 控件上一切正常。

我尝试使用 WindowsFormHost 将 Winform 控件添加到 WPF 控件中,但这使情况变得更糟,因为之后它不会注册退格键。我尝试捕获电子邮件的删除事件,但无法触发 .BeforeDeleteExplorer.BeforeItemCut 事件也是如此。目前我正在尝试捕获 WndProc 事件以重定向关键事件,但似乎应该有更好/更简单的方法。

不知道如何从这里继续。欢迎任何方向的帮助。以下是我尝试捕获电子邮件删除事件的方式。

Outlook.MailItem _selEmail;

// This does get triggered
private void Explorer_SelectionChange()
{
    var actExplorer = this.Application.ActiveExplorer();
    if(this.Application.ActiveExplorer().Selection.Count > 0)
    {
        var selObject = actExplorer.Selection[1];
        if(selObject is Outlook.MailItem)
        {
            _selEmail = selObject as Outlook.MailItem;
            _selEmail.BeforeEmailDelete -=
                new Outlook.ItemEvents_10_BeforeDeleteEventHandler(Email_BeforeDelete);
            _selEmail.BeforeEmailDelete += 
                new Outlook.ItemEvents_10_BeforeDeleteEventHandler(Email_BeforeDelete);
        }
    }
}

// Haven't gotten this to trigger. The Console.Write("") is there
// only for a breakpoint;
private void Email_BeforeDelete(object sender, ref bool cancel)
{
    Console.WriteLine("");
}

【问题讨论】:

    标签: c# outlook outlook-addin outlook-2013


    【解决方案1】:

    首先,我建议打破属性和方法调用链,并在单独的代码行中声明每个属性或方法调用。因此,您将能够就地释放底层 COM 对象。使用完后,使用System.Runtime.InteropServices.Marshal.ReleaseComObject 释放 Outlook 对象。然后在 Visual Basic 中将变量设置为 Nothing(在 C# 中为 null)以释放对对象的引用。您可以在 MSDN 的 Systematically Releasing Objects 文章中阅读更多相关信息。

    尝试关闭 Outlook 中的使用空格键单键阅读选项,该选项可让您在阅读窗格中快速浏览邮件。空格键滚动当前项目。在项目的末尾,它会跳转到消息列表中的下一个未读项目。

    最后,在 Outlook 表单上使用 WPF 控件会产生一个众所周知的问题。 Outlook 习惯于吞下各种键,而不是将它们发送到您的代码或表单区域。在阅读窗格中按下这些键时,空格键、制表符、退格键都会受到影响。你可以找到similar forum thread

    【讨论】:

    • 感谢发布建议。我似乎完全没有空格键的问题,并且 WPF 控件运行良好(我能够选择所有文本并删除)。只有区域窗体中的 Winforms 控件没有接收 Delete 或 Ctrl 键,但它确实得到了退格键。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-03
    • 1970-01-01
    • 1970-01-01
    • 2017-12-28
    • 2011-11-05
    • 1970-01-01
    相关资源
    最近更新 更多