我需要RichTextBox
在 Windows 窗体中创建,它最多可以有 18 个字符,最多 6 行。问题RichTextBox
是当你写很长的单词时,它显示为两行,但它被视为一行。例如:
这是
supercalifragilist
icexpialidocious
这是一个有两行的文本。
我的第一种方法是创建自己的类,该类继承自RichTextBox
并覆盖OnTextChanged
。做得很好,但我完全忘记了自动换行。所以我在我的方法中实现了自动换行。
算法非常简单:当文本发生变化时,用“空格”和“换行”字符分割它。然后我计算一行输入了多少个字符,如果有单词空间,我把它放在这一行。当没有单词空间时,我正在创建新行。
烦人的部分:现在它有一些错误,我不知道如何解决。假设用户写了 18 个字符长的单词。他在最后一个字符后有一个光标。现在:
- 他可以按回车,手动创建换行符,换行符应该一直在这个地方。
- 他可以按空格键开始写新单词。
- 他可以继续为这个词写其他字符。
在每种情况下,他最终都会得到 18 个字符的长单词和“换行符”字符。我不知道如何发现,他想做什么。请记住,用户可以将光标放在任何地方并编辑他之前输入的文本。
我知道我可以创建自定义字符串类(从字符串继承)或保留输入单词的列表,但是实现这将是痛苦的,并且代码将开始变得不可读。
任何想法如何更好地做到这一点?