我正在编写一个小型文本编辑器,它应该具有非常基本的格式化功能,没有什么花哨的,但比 RichTextBox 所能提供的更复杂(包括“页面”显示功能)。
但是,我上次编写任何文本编辑器时是使用 C 语言中的 WinAPI for Windows 3.1。我不知道如何使用 .NET 来解决这个问题。在空白之前我得到的进一步发展是使用 TextRenderer.DrawText() 将我拥有的文本输出到一个矩形中......但有些东西告诉我在这种情况下这不是要走的路,因为我一直认为一方面,我想要 XML 格式的背景文本......虽然我可以用标签分解段落,但我不知道如何进行格式化,例如或不同的字体系列,所以它可能需要接近了一点不同。大概每个字都是分开的。我是否必须将每个单词保存在一个数组中(尊重 xml 标签)并将其绘制为一个单独的控件,并将其位置保持在数组中?如果我们'
所以...我正在寻找的是一些提示和技巧(我不能使用 Tx 文本编辑器、DevExpress 或 Telerik 的 RichTextEditors 有充分的理由加上它们的价格)。关于构建一个可以很好地用 C#.NET 扩展的“文字处理器”的最正确方法,因为这是我迄今为止从未涉足的一件事。
基本上:
1) 将文本绘制到自定义控件中的最佳方式。我应该如何保存我的文本?当我加载文件时,我可能会使用基本 Text 属性进行预格式化阶段。或者也许我会用我的自定义 XML 类来扩展它?使用退格键时,我应该保持单词的顺序并用手将它们连接起来吗?等等等等。
2)进行选择的最佳方式(我认为可能只有一种方式?),而在 WinAPI 中,我可以检测光标下的字符,因为它是标准文本,考虑到字体的数量和窗口绘制字符的方式,我要么有到 OCR,然后开始计算位置......所以我认为有更好的选择文本的方法?
3)编辑文本 - 一旦我有了光标位置,我会认为这很简单。
为阅读而欢呼……希望有人提出比我微弱的 DrawText 更好的解决方案……这并不是真正的解决方案。