2014-11-16 14 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事件路由到当前选定的Block/Paragraph,因此您将不得不处理RTB事件,并使用当前的CaretPosition获取当前的段落。

+1

您是否知道Microsoft为什么会为块(即段落)提供KeyDown事件?它似乎没有工作... – manton

+1

我想为我正在做的项目实现类似的事情。看起来像这些事件触发,当我们设置IsDocumentEnabled属性并添加一些UI控件(如文本框)到FlowDocument和UI内部获取keydowns。 – Naresh

+0

非常感谢! –