2014-11-16 2 views
1

Я добавил KeyDown, PreviewKeyDown событие (и некоторые другие) к программно созданной части:WPF пункт не KeyDown стреляя

 Paragraph p = new Paragraph(); 
     Run r = new Run("new Text here"); 
     p.Inlines.Add(r); 
     p.KeyDown += new KeyEventHandler(p_KeyDown); 
     p.PreviewKeyDown += new KeyEventHandler(p_PreviewKeyDown); 
     p.PreviewTextInput += new TextCompositionEventHandler(p_PreviewTextInput); 
     p.TextInput += new TextCompositionEventHandler(p_TextInput); 
     myrtb.Document.Blocks.Add(p); 

Но ни один из них не стреляет, когда я изменить текст («новый текст здесь») в RichTextBox. Кто-нибудь знает, что я здесь делаю неправильно? Большое спасибо!

+0

Почему не обрабатывать Rich Textbox KeyDown? –

+0

У этого есть разные причины. После получения события я каким-то образом переформатировал блоки в документе RichTextBox. Поэтому после этого я не знаю, какой блок (абзац) был нажат. Если бы я мог получить событие для абзаца, у меня не было бы этих проблем. Microsoft предоставляет событие KeyDown для блоков. Почему это не работает? – manton

ответ

0

Насколько я могу судить, RichTextBox не передает события KeyDown в текущий выбранный блок/абзац, поэтому вам придется обрабатывать события RTB и получать текущий абзац с помощью текущего CaretPosition.

+1

Вы знаете, почему Microsoft предоставляет событие KeyDown для блоков, то есть пунктов? Кажется, он не работает ... – manton

+1

Я хотел достичь аналогичной вещи для проекта, который я делаю. Похоже, что эти события срабатывают, когда мы устанавливаем свойство IsDocumentEnabled и добавляем некоторые элементы управления пользовательским интерфейсом (например, текстовое поле) в FlowDocument, а внутри пользовательского интерфейса получают подзаголовки. – Naresh

+0

Спасибо, что хотите знать! –

Смежные вопросы