簡體   English   中英

防止文本在AvalonEdit中更新

[英]Preventing Text From Updating In AvalonEdit

我知道,如果您處理編輯器的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類為接口提供了有用的默認實現。

textEditor.IsReadOnly = true;整個文檔設為只讀,只需設置textEditor.IsReadOnly = true;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM