【问题标题】:WPF paragraph keydown not firingWPF段落keydown不触发
【发布时间】:2015-01-13 17:33:34
【问题描述】:

我已将 KeyDown、PreviewKeyDown 事件(以及更多)添加到以编程方式创建的段落中:

        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 中的文本(“此处的新文本”)时,它们都没有触发。有谁知道我在这里做错了什么? 非常感谢!

【问题讨论】:

  • 为什么不处理富文本框 KeyDown?
  • 它有不同的原因。收到事件后,我以某种方式重新排列了 RichTextBox 文档中的块。所以在那之后我不知道点击了哪个块(段落)。如果我能收到该段落的事件,我就不会有这些问题。 Microsoft 为块提供 KeyDown 事件。为什么它不起作用?

标签: wpf richtextbox keydown paragraph


【解决方案1】:

据我所知,RichTextBox 不会将 KeyDown 事件路由到当前选定的块/段落,因此您必须处理 RTB 事件,并使用当前的 CaretPosition 获取当前段落。

【讨论】:

  • 你知道微软为什么要为块即段落提供 KeyDown 事件吗?它似乎不起作用......
  • 我想为我正在做的项目实现类似的事情。当我们设置 IsDocumentEnabled 属性并将一些 UI 控件(如文本框)添加到 FlowDocument 并且在 UI 内部获取 keydowns 时,看起来这些事件会触发。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-05
  • 1970-01-01
  • 1970-01-01
  • 2011-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多