我正在爲特定領域的語言創建文本編輯器。我使用WPF RichTextBox
作爲基本控件。我不知道如何優美地包含行號。有誰知道任何例子?WPF RichTextBox使用行號創建編輯器
回答
我會創建一個複合控件,在左側使用堆棧面板控件和文本塊來處理行編號。如果您關心的是行數和視覺元素太多,那麼您可以在虛擬模式下使用ListBox。
您必須連接到RichTextBox上的各種事件,以便知道何時更新列表框以及計算每行的高度,但應該使用附加到RichTextBox的FlowDocument進行操作。
我不確定我是否喜歡這個想法 - 保持列表框文本基線與RichEdit基線內聯可能會有問題(當然,如果他的代碼格式化程序允許不同的字體) - 但由於我沒有替代方案,因此+1 – 2009-02-19 22:12:53
我沒有足夠的智慧來完成這項工作。我一直無法弄清RichTextBox何時滾動,以便我可以嘗試滾動ListBox相同的數量。而且,由於RTB中的行太長,它會自動包裝它們的顯示,並且在這種情況下我應該省略ListBox行數。 – 2009-02-20 04:50:20
RichText支持「受保護」 - 不可編輯 - 跨度。您可以將行號作爲受保護的文本跨度轉儲爲RTF流的一部分(當您執行格式化時)。
在Win Forms中,您可以使用RichTextBox.SelectionProtected Property。 WPF必須有類似的東西。
這樣,你所有的基線都是正確的,你不需要做任何額外的思考/編程來讓編輯器正常工作。可編輯文本將是可編輯的,並且行號不會。
唯一的缺點是每次編輯後都必須重新提交RTF流。但我想你已經這樣做了,提供解析格式/錯誤診斷/任何。
如何使用AqiStar的富文本WPF控件? AqiStar.TextBox
我不爲他們工作......我只知道Oren在他的NHibernate Profiler(NHProf)中使用這個產品,他似乎在挖掘它。
AvalonEdit是一個很好的,它是開源的。我認爲它幾乎具有語法高亮和摺疊等Aqistar控件的所有功能。易於配置和使用。進一步的細節可以找到here。
- 1. 用行號創建文本編輯器
- 2. 使用RichTextBox的VB.Net編輯器問題
- 3. 動態創建WPF richtextbox
- 4. 在ControlTemplate中使用ComboBox編輯器創建WPF標籤
- 5. 如何使用WPF構建行爲樹編輯器?
- 6. c#WPF行和列號從RichTextBox
- 7. richtextbox高級編輯
- 8. WPF RichTextBox文檔創建線程問題
- 9. 動態創建編輯器
- 10. 創建圖形編輯器
- 11. c#WYSIWYG編輯器使用瀏覽器和richtextbox
- 12. 使用WPF控件創建可編輯表格
- 13. 在WPF中使用RichTextBox創建HTML文檔
- 14. RichTextBox中的行,WPF
- 15. 防止WPF RichTextbox中的超鏈接被最終用戶編輯
- 16. WPF RichTextBox - 禁用編輯,但保持光標
- 17. richtextbox行號列
- 18. 項目符號或編號在WPF的RichTextBox
- 19. 如何創建一個WPF形狀編輯器?
- 20. 如何使用WPF構建簡單的源代碼編輯器?
- 21. 什麼是創建編號RichtextBox的最佳方法?
- 22. 如何編輯用Aloha編輯器動態創建的dom?
- 23. 使用WPF/Windows Forms進行圖編輯器
- 24. ACE編輯器:動態創建一個新的編輯器
- 25. 在RichTextBox中限制編輯
- 26. 將插入符號設置爲WPF RichTextBox中的行首號碼
- 27. 如何使用Atom編輯器創建,構建,運行和調試Rust程序?
- 28. 使用編輯模式創建表單
- 29. 使用FO創建可編輯的PDF
- 30. WPF輸入法編輯器
我沒有足夠的智慧來完成這項工作。我一直無法弄清RichTextBox何時滾動,以便我可以嘗試滾動ListBox相同的數量。而且,由於RTB中的行太長,它會自動包裝它們的顯示,並且在這種情況下我應該省略ListBox行數。 – 2009-02-19 22:20:48