我有以下两个代码:
private void AddTextToLog(string textToAdd)
{
//Console.WriteLine(@"Raw Text: " + textToAdd);
textToAdd = RemoveInvalidCharacters(textToAdd);
var array = ParseLogText(textToAdd);
foreach (var entry in array)
{
_log.Add(entry);
MainForm.Get.UISynchContext.Send(o => MainForm.Get.AddToChatLog(entry), null);
}
}
和
public void AddToChatLog(string text)
{
tbChatLog.AppendText("\r\n" + text);
//tbChatLog.AppendText(Environment.NewLine);
}
这里发生的是当调用AddTextLog(text)
时,一些新文本被附加到tbChatLog,这是一个textBox。
奇怪的是,如果在\r\n
方法中不包含Environment.NewLine
或AddToChatLog
,则所有内容都会直接相互添加,而不会有任何换行符或空格。如果我添加这两个换行符中的一个,那么它不仅会被删除到文本框的下一行,而且还会添加一个完整的空行。所以它似乎有两个换行符。
有什么想法吗?
谢谢!
更新
这是没有添加任何换行符的文本:
A710E000A:Simon:1A7110000A:Simon:2A7118000A:Simon:3
如果我在AddToChatLog
添加某种换行符,我就明白了:
A721F000A:Simon:1
A7222000A:Simon:2
A7223000A:Simon:3
更新2:
嗯,我在Console.WriteLine("ENTRY: " + entry)
方法中添加了AddTextToLog
,每次在for循环中添加一些内容时都会出现,还有一个空条目。这真是奇怪。我从string.Split方法得到数组,数组中应该没有空条目......
SOLUTION:
我分裂了一组特定的字符,因为事实证明主字符串可以从一开始。如果在字符串的开头拆分,实际上会得到一个字符串数组,顶部有一个空字符串。两个都有效的修复:一个是使用Linq剥离空数组条目。另一个更容易,只是从主字符串创建一个子字符串,它会启动几个字符,因此在主字符串的开头不会发生拆分。
感谢您的帮助!