改变文本框.来自静态方法的文本

本文关键字:文本 静态方法 改变 | 更新日期: 2023-09-27 17:54:14

我正在运行服务器/客户端通信。现在我想在服务器textBox上写一些东西,并在客户端textBox上显示它,所以我从服务器向客户端发送一条消息,该消息使用静态方法获取它:

    static void Client_MessageReceived(object sender, MessageEventArgs e)
    {
        //Client only accepts text messages
        var message = e.Message as ScsTextMessage;
        if (message == null)
        {
            return;
        }
    }

现在我只想从这个静态方法将消息附加到客户端textBox。我想我需要一些invoke,但我不知道怎么做,我在谷歌上找不到任何有用的东西。

改变文本框.来自静态方法的文本

调用方法

public void AppendText(string what, bool debug = false)
     {
         if (debug)
             return;
         if (this.InvokeRequired)
         {
             this.Invoke(
                 new MethodInvoker(
                 delegate() { AppendText(what); }));
         }
         else
         {
             DateTime timestamp = DateTime.Now;
             tbox.AppendText(timestamp.ToLongTimeString() + "'t" + what + Environment.NewLine);
         }
     }

消息接收方法

 private void Client_MessageReceived(object sender, MessageEventArgs e)
        {
            //Client only accepts text messages
            var message = e.Message as ScsTextMessage;
            if (message == null)
            {
                return;
            }
            AppendText(message.Text, false);
            //Console.WriteLine("Server sent a message: " + message.Text);
        }
// Program.cs
public static ProgramForm Form;
publi static void Main()
{
    // ...
    Application.Run(Form = new ProgramForm());
    // ...
}
public static void ChangeText(String message)
{
    Form.TextBox1.Text = message;
}
// ProgramForm.cs
private void Client_MessageReceived(object sender, MessageEventArgs e)
{
    if (e.Message != null)
        Program.ChangeText(e.Message);
}