gpt4 book ai didi

c# - 防止文本在 Avalon 中更新编辑

转载 作者:行者123 更新时间:2023-12-03 22:22:10 25 4
gpt4 key购买 nike

我知道如果您处理编辑器的 PreviewKeyDown 事件然后将 KeyEventArgs 的 e.Handled 设置为 true,则可以完全禁用输入。

但是,我想弄清楚如何防止文档文本在修改后更新。我想像这样处理 Document.Changing 事件:

textEditor.Document.Changing += Document_Changing;

其中 textEditor 是我的 AvalonEdit 编辑器。我想在函数中检索正在修改的文本

private void Document_Changing(object sender, DocumentChangeEventArgs e)

然后根据它做一些计算。但是,我不希望文本在处理之前在编辑器中更新。我在 Document_Changing 中做一些异步处理,当它完成时我触发另一个事件,然后我才希望它更新。我不想只禁用视觉更新,而是完全更新文档。

那么有没有一种方法可以禁用此更新,类似于在处理键盘相关事件时如何阻止输入?

提前致谢

最佳答案

您可以使用 textEditor.TextArea.TextEntering 事件来阻止用户输入。但是,该事件仅用于打字;其他操作(例如剪切/粘贴/拖放)目前不会导致任何编辑器事件(仅文档事件,但此时中止为时已晚)。

另一种选择是实现 IReadOnlySectionProvider 以将文本标记为只读。这适用于文本输入和剪贴板操作,甚至在插入符号位于只读部分时禁用“粘贴”菜单命令。TextSegmentReadOnlySectionProvider 类为接口(interface)提供了一个有用的默认实现。

要将整个文档变为只读,只需设置 textEditor.IsReadOnly = true;

关于c# - 防止文本在 Avalon 中更新编辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11171062/

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