【发布时间】:2015-03-27 23:58:33
【问题描述】:
所以,我终于不得不处理这个烦人的问题了。似乎这是一个已知的“错误”,似乎没有很好的解决方法。我想知道什么似乎是最好的解决方法。
一点信息。在我的表单区域中,我有一个 Winform 控件和一个 WPF 控件。用户不能在 Winform 控件上执行某些组合键(Ctrl-A 全选,Delete 键删除电子邮件而不是突出显示的文本),但在 WPF 控件上一切正常。
我尝试使用 WindowsFormHost 将 Winform 控件添加到 WPF 控件中,但这使情况变得更糟,因为之后它不会注册退格键。我尝试捕获电子邮件的删除事件,但无法触发 .BeforeDelete。 Explorer.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