Итак, мне, наконец, пришлось иметь дело с этой досадной проблемой. Похоже, что это известная «ошибка», и, похоже, нет большой работы. Мне было интересно, что для этого лучше всего подходит.Регион Форматирования 2013 года и ключ удаления
Немного информации. В моей области формы у меня есть элемент управления Winform и элемент управления WPF. Пользователь не может выполнять определенные комбинации клавиш в элементе управления Winform (Ctrl-A, чтобы выбрать все, клавиша Delete удаляет электронную почту вместо выделенного текста), но все отлично работает с элементом управления WPF.
Я попытался добавить элемент управления Winform в элемент управления WPF с помощью WindowsFormHost, но это сделало его еще хуже, так как после этого он не зарегистрировал бы клавишу backspace. Я попытался захватить событие delete для электронной почты, но я не могу заставить .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("");
}
Благодарим за предоставление совета. У меня, кажется, нет проблем с пробелом вообще, и WPF-контроль работает отлично (я могу выбрать весь текст и удалить). Это только контроль Winforms в области, который не получает клавиши Delete или Ctrl, однако он получает ключ backspace. – Natzely