为什么我的方法不会附加这个richTextBox

时间:2018-04-22 13:02:29

标签: c# winforms

我目前正在尝试制作即时消息应用程序。

有一个客户端和一个服务器。服务器工作正常但由于某种原因,当我调用某个函数更新UI时,TextBox不会添加文本。

下面是我的代码示例 - 在我的应用程序中从另一个表单调用更新UI:

public ChatWindow()
    {
        InitializeComponent();
        Thread timerThread = new Thread(Main.ReceiveLoop);
        timerThread.Start();
    }

    private void txtChatLog_TextChanged(object sender, EventArgs e)
    {

    }

    private void btnSendMessage_Click(object sender, EventArgs e)
    {
        string clientReply = txtReply.Text;
        string Message = "ClientMsg§" + clientReply;
        var time = DateTime.Now;
        txtChatLog.AppendText($"{time} client: {clientReply}");
        txtChatLog.AppendText(Environment.NewLine);
        Main main = new Main();
        main.ChatResponse(Message);
        txtReply.Text = "";

    }

    public void UpdateChatLog(string message)
    {
        var time = DateTime.Now;
        string newMessage = message.Split('$')[1];
        string messageToDisplay = $"{time} Server: {newMessage}";
        MessageBox.Show(messageToDisplay);
        txtChatLog.AppendText(messageToDisplay);
        txtChatLog.AppendText(Environment.NewLine);
    }

    private void ChatWindow_Load(object sender, EventArgs e)
    {

    }

当我使用messagebox.show();

检查时,客户端正在从服务器接收消息

同时按下发送消息按钮时,会更新富文本框。但由于某种原因,它不会通过UpdateChatLog方法更新。

任何帮助都会非常感激。

谢谢你提前!

2 个答案:

答案 0 :(得分:0)

从您粘贴的代码中,您不需要调用UpdateChatLog方法。 尝试添加UpdateChatLog(消息);到btnSendMessage_Click方法。

答案 1 :(得分:0)

尝试刷新文本框:txtChatLog.Refresh()