从静态方法更改textBox.Text

时间:2013-01-18 22:41:58

标签: c# static static-methods invoke

我正在运行服务器/客户端通信。 现在我想在服务器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,但我不知道怎么做,而且我无法在Google找到任何有用的东西。

2 个答案:

答案 0 :(得分:1)

调用方法

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);
        }

答案 1 :(得分:0)

// 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);
}