这是前面提到的(和已解决的)问题(Unable to get desired output for keydown c#)
的扩展我有两个文本框,必须根据用户在其中一个文本框中键入的内容进行同步
现在,在你开始思考我可以简单地将文本框等同之前,我会告诉你,这不是我的最终目标。因此,复制文本是行不通的
问题:
该文本由换行符组成
//Next Line
if (e.KeyData == Keys.Enter)
textBox2.Text += Environment.NewLine;
当用户按退格键时,它会使用
删除字符//Remove a character
if (e.KeyCode == Keys.Back && textBox2.TextLength != 0)
textBox2.Text = textBox2.Text.Remove(textBox2.TextLength - 1, 1);
很简单吧?这就是扭曲 每当我在换行符中写入内容并将其擦除以返回上一行时,在第一个文本框中,需要两个退格键来擦除换行符并返回到第二个文本框中的上一行。
例如,假设文本为
你好
你好
删除"嗨":
你好
(新的产品线仍然存在,因为我还没有试过去掉它)
现在,如果我想删除' o'从"你好",我必须正常按两个后退空间,我已经"地狱" (这是在我输入的第一个文本框中发生的情况)
但是,通过这样做,第二个框中的文本仍然是" Hello"。我需要第3个退格才能删除' o
此时,我的两个文本框不同步,因为
第一个文本框中的内容:" Hel"
第二个文本框中的内容:" Hell"
那么,请告诉我为什么会这样?我可以做些什么来解决它。
答案 0 :(得分:2)
新行可能是一个字符。它也可能是两个。
它被称为"回车"和"换行"从我们都使用类型作家的日子回来。两个字符,一个接一个,象征着换行符。
您应该使用调试器并在添加新行时检查字符串。在您描述之后,我会发现0x0d
字符后跟0x0a
字符并不会感到惊讶。