[英]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.