gpt4 book ai didi

c# - 在 RichEditBox 中包含当前撤消组中的文本更改?

转载 作者:太空宇宙 更新时间:2023-11-03 15:04:07 24 4
gpt4 key购买 nike

我正在开发一个 UWP 应用程序,我正在使用 RichEditBox控件,我在使用撤消功能时遇到了一些问题。

我知道我可以使用 ITextDocument 中的 BeginUndoGroup 方法RichEditBox 公开的对象,用于创建我可以在编辑文本时使用的撤消组,因此用户将一起撤消所有这些更改(当我也调用 EndUndoGroup 时)。

我的问题是我的应用程序中有一些自动完成功能,但我不知道如何使我为自动完成添加的字符/更改包含在之前的撤消组中。

For example, say you enter the 'h' character, I detect that from the TextChanged event (or another event from the RichEditBox and I add "ello" to the text, so you end up with "hello", and then color the whole word in green.

If I use the BeginUndoGroup method, I can undo both the added "ello" and the green color, but the user will still end up with the 'h' character being there.

Or, if for example I color each new character in a random color, I have no idea how to make it so that the undo feature will undo both my color change and the previous character entered by the user.

有什么方法可以解决这个问题(即在当前/上一个撤消组中包含一些更改),还是我只需要想出一些肮脏的技巧,比如调用 Undo当用户想要撤消更改时两次方法,希望他不会注意到文本闪烁?

感谢您的帮助!

最佳答案

看起来没有内置解决方案,所以我通过从 KeyDown 调用 BeginUndoGroup 解决了这个问题(实际上更多的是解决方法,但到目前为止它工作正常) 事件处理程序,并在 TextChanged 处理程序中调用 EndUndoGroup

我还在应用语法高亮前后禁用/启用 TextChanged 处理程序,否则该处理程序将在我应用文本格式时执行。

此外,完美地调用 Begin/EndUndoGroup 似乎并不重要,因为在错误的情况下调用其中任何一个(例如,调用 EndUndoGroup 当没有新的打开组时,或者 BeginUndoGroup 连续两次)什么都不做,所以就少了一件需要担心的事情。

关于c# - 在 RichEditBox 中包含当前撤消组中的文本更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44599654/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com