【问题标题】:Odd Behaviour with Lines in TextBox and .AppendText() - C#TextBox 和 .AppendText() 中的行的奇怪行为 - C#
【发布时间】:2010-10-20 15:49:24
【问题描述】:

我目前正在关注 Geekpedia 上的精彩教程,以创建我自己的 Chat ClientChat Server

将客户端连接到服务器工作正常,但我在聊天日志中显示的文本遇到了一些问题。

显示的第一条消息在服务器窗口中,然后监控传入的连接:

然后我去将Client连接到主机,一切都很好,并且显示了相应的日志消息:

现在,当我发送一条简单消息时,Line.Length 属性显示为 3,特别注意文本:

此外,.Text 属性包含所有内容,而不仅仅是当前行:

现在查看服务器和客户端窗口,您会注意到文本在错误的位置复制了一些内容,并且之前的消息被覆盖:

如果我再次按下发送按钮(使用相同的字符串/消息),我会在调试器中注意到这一点:

服务器窗口中的文本并没有进一步向下移动,它似乎覆盖了之前的内容。客户端窗口中的文本也消失了:

所以如果我再次按下发送文本按钮,我们会看到 Line 属性:

我完全不知所措,我花了好几个小时调试代码,即使在使用差异工具将原始代码与我的代码进行比较之后,它也是一样的(不同情况下的某些单词除外)。

如果我运行原始源代码并检查相同的 Length 属性,我注意到计数为 1,而 .Text 属性只有一行:

一切都正确显示:

有人知道发生了什么吗?现在我知道一个选择是简单地使用源代码本身,但我想“边做边学”并且想知道为什么会发生这种情况以及如何解决它。

感谢您的宝贵时间!

【问题讨论】:

    标签: c# .net networking tcp


    【解决方案1】:

    我在这里只是在黑暗中拍摄,但是您修改后的代码中的 SendMessage 方法使用了来自 chatWindow 控件的文本。原始代码中的 SendMessage 使用来自 txtMessage 的文本。我认为您使用了错误控件中的文本。

    【讨论】:

    • 好发现!文本正确显示在服务器日志上,但现在在客户端窗口上,每条新消息都会覆盖前一条消息,本质上客户端只有前一条语句的记录。 =[
    • 只需检查以确保您没有从任何地方清除 chatWindow 中的文本。在您帖子的 SendMessage 中,您清除了两次文本 - chatWindow.Lines = null 和 chatWindow.Text = ""
    • 好地方!不敢相信错误如此明显。感谢您的新眼睛=]
    猜你喜欢
    • 2016-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-10
    • 2012-11-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多