我正试图围绕WinForms RichTextBox中的一个行为。
当您使用RichTextBox并选择RichTextBox的右端时,可以通过按住shift并向右推动来选择右侧的其他字符。
令我难以理解的是RichTextBox的SelectionLength属性为0。 如果从视觉上看它,你可以选择1个字符长度,从当前文本的结尾开始。如果你看一下curSelStart和curSelEnd属性,curSelStart从Text属性的末尾开始,并且curSelEnd超出它的一个字符。
我们正在使用我们自己的Winforms RichTextBox子类,它实现了所有特殊行为的方式,其中我们假设如果你按一个SelectionLength为0的退格键,你将删除一个字符。在这种情况下,这个假设不再正确,因为按退格键只会删除当前的选择。
关于它为何如此表现的任何想法?有什么方法吗?
答案 0 :(得分:0)
当我们开始使用启用了MultiLine的自定义RichTextBox控件时,这种行为开始给我们带来麻烦。因此,这已经从我观察到的奇怪行为升级为我必须解决的错误。
RichTextBox如何处理换行符似乎是一个怪癖。在每一行的末尾总会有一个'\ n'字符。这是我在上面的问题中描述的神秘人物。如果您尝试将其删除,将会立即进行读取。
使用这个knowlegde,我可以检查属性SelectedText是否以'\ n'字符结尾,如果我插入的新文本不包含'\ n',我确定我需要添加一个额外的字符我的偏移量我需要自定义控件。
我无法相信我之前没有注意到'\ n'。噢..问题现在解决了。