改变文本框.来自静态方法的文本
本文关键字:文本 静态方法 改变 | 更新日期: 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);
}