【发布时间】:2016-12-05 22:06:47
【问题描述】:
尝试使用 WPF RichTextBox 事件进行一些文本操作时,我遇到了一个非常烦人的行为。
这个想法是有一些逻辑,一旦满足某些条件,就会提取 RichTextBox 文本。
问题是TextChanged 事件几乎是完美的,我可以获得我想要的所有文本,但是在TextChanged 上忽略了 Enter 键并且该事件永远不会被触发。
所以PreviewKeyDown 是正确的,对吧?错误的。 PreviewKeyDown 只返回最后一个键被按下之前的文本......而且 KeyDown 也会忽略 Enter 键。此外,KeyUp 也不是一个选项,因为我希望能够阻止某些键被输入。
是否有一个事件可以让我获得 RichTextBox 的整个文本,包括 Enter?
编辑:
我正在构建一个 TokenizingRichTextBox 几乎遵循 this tutorial,并进行了一些小的修改(我将它变成了混合行为而不是一种新的控件)。
问题在于用户键入 Enter 时。只有最后一段的文本被添加到新的Token。我想使用 Enter 和 Tab (以及其他字符)来触发 Token 创建。但我不能,如前所述,因为 Enter 被忽略了。
此外,虽然这可以通过一些关键事件来解决,但我打算在RichTextBox 中添加某种AutoComplete。使用 AutoComplete 不会触发任何 Key 事件,只会触发 TextChanged,因此考虑到这一点会使事情变得更加复杂。
【问题讨论】: