将字符串附加到WinForm中的textBox时添加了双换行符

时间:2015-01-29 17:28:24

标签: c# arrays string winforms

我有以下两个代码:

    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.NewLineAddToChatLog,则所有内容都会直接相互添加,而不会有任何换行符或空格。如果我添加这两个换行符中的一个,那么它不仅会被删除到文本框的下一行,而且还会添加一个完整的空行。所以它似乎有两个换行符。

有什么想法吗?

谢谢!


更新

这是没有添加任何换行符的文本:

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剥离空数组条目。另一个更容易,只是从主字符串创建一个子字符串,它会启动几个字符,因此在主字符串的开头不会发生拆分。

感谢您的帮助!

0 个答案:

没有答案