2013-11-18 5 views
-1

В моем приложении формы я добавил устройство для чтения Adobe Reader, чтобы показать pdf-файлы в моем приложении. У меня есть разделенная панель, поэтому слева находится древовидная структура с каталогами и файлами. И с правой стороны у меня есть контроль считывателя Adobe. Работает хорошо.adobe reader control в форме приложения кражи ключевых событий

Но я хочу реализовать некоторые ключевые события, в то время как фокус находится на устройстве считывателя adobe. Я ищу целый день, чтобы найти решение, которое работает.

Я также попытался переопределить событие ProcessCmdKey, но это тоже не сработало. Событие не вызывается, когда основное внимание уделяется управлению считывателем adobe. Событие calld, если фокус находится в форме или в дереве. Ошибка была отображена или в консоли. Также тестируется с точкой останова.

Итак, есть ли что-то, что вы знаете, а я нет? Ваши предложения очень приветствуются. Спасибо.

+1

Можете ли вы быть более ясными, ProcessCmdKey-Event не работает, что произошло, произошла ошибка или не вызвало событие? Не могли бы вы поставить контрольную точку внутри для тестирования? – Max

+0

Adobe Reader - это зло. Он вставляет окно другого процесса внутри вашей формы. Это окно - черная дыра для нажатий клавиш, только процесс Adobe может их видеть. Единственный разумный совет - не использовать злобное программное обеспечение. –

+0

Есть ли хорошая альтернатива для показа PDF-файлов в форме и без использования Adobe Reader? – codeslave

ответ

0

Только что протестировано после переопределения метода ProcessCmdKey. Это работает для меня, вы можете попробовать следующий код?

protected override bool ProcessCmdKey(ref System.Windows.Forms.Message msg, Keys keyData) 
{ 
     if (keyData == (Keys.Control | Keys.OemQuestion)) 
     { 
       MessageBox.Show("Shortcut Keys Work!", "Yay!"); 
       //Code executes when CTRL + ? button are pressed. 
       //Change keys to your needs. 
       return true; 
     } 
     return base.ProcessCmdKey(ref msg, keyData); 
} 

Я не уверен, что горячие клавиши вы хотите обработать, но выше код обрабатывает CTRL + Questionmark, IntelliSense поможет вам с большим количеством опций, при вводе в период за Keys.

+0

спасибо за ваш пример. проверено: не работает. (может быть) немой вопрос, но только чтобы убедиться (я новичок в visual studio и C#): с помощью «переопределить ... метод» вы имеете в виду: скопируйте этот метод в мой класс Form.cs, как метод, вправо ? – codeslave

+0

Что не сработало? Ошибка, или не вызвали? Вы пытались установить точку останова? – Max

+0

Да, я установил точку останова. без показа pdf, вызывается метод и выполняется код. но на данный момент фокус - это контроль считывателя adobe, ничего не происходит, метод не вызывается (без сообщения об ошибке). – codeslave