.net SFML全屏文本编辑器

.net SFML全屏文本编辑器,.net,text,editor,fullscreen,sfml,.net,Text,Editor,Fullscreen,Sfml,我正在尝试创建一个全屏极简文本编辑器(极简的意思是只有一个闪烁的插入符号、黑色背景、通过箭头控制键盘在文本中移动、退格删除等等,就是这样)。我已经创建了一个RenderWindow,我有一个文本的全局字符串缓冲区,我使用String2D类在屏幕上可视化它(我使用VC2010和.NET包在C#中开发它) 基本上,我所做的是捕捉击键,检查它们是否来自字母、数字或任何其他在书写中有用的书写符号,并使用RenderWindow的draw在屏幕上永久可视化的字符串缓冲区中添加或减去它们 现在的问题是,如何

我正在尝试创建一个全屏极简文本编辑器(极简的意思是只有一个闪烁的插入符号、黑色背景、通过箭头控制键盘在文本中移动、退格删除等等,就是这样)。我已经创建了一个RenderWindow,我有一个文本的全局字符串缓冲区,我使用String2D类在屏幕上可视化它(我使用VC2010和.NET包在C#中开发它)

基本上,我所做的是捕捉击键,检查它们是否来自字母、数字或任何其他在书写中有用的书写符号,并使用RenderWindow的draw在屏幕上永久可视化的字符串缓冲区中添加或减去它们


现在的问题是,如何实现由箭头控制的正确插入符号移动。如果有人想使用下/上/左/右箭头在整个文本屏幕上移动。对于在一行文本中的左/右移动来说很容易,可以实现一个计数器来知道应该在哪个字符之后插入插入符号。然而,最终我将不得不在屏幕结束的地方断行,然后,如果有人想向下或向上一行,我如何正确地“发现”在何处呈现插入符号,以及如何知道它在字符串中的哪个位置,因为有人可以在之后添加或删除部分文本。或者我的方法完全错了?请告知。

存储将索引保存到主字符串缓冲区中的
对象的附加列表。每次向缓冲区添加新行时,更新当前的
对象,并为新行添加新行

要移动插入符号,只需找到当前行并根据需要向上或向下移动一行即可

另一种方法可能是将每一行存储在一个单独的字符串中,但这会增加跨行操作的复杂性