C# 使类将数据附加到窗体上的文本框

C# 使类将数据附加到窗体上的文本框,c#,class,C#,Class,基本上,我有一个类来处理一些websocket的事情,当收到一条消息时,就会触发下面看到的类代码。messagebox可以正常启动并显示数据,但是文本没有输入到文本框中,它似乎崩溃了,没有出现错误 表格编号: CreateSocket cs = new CreateSocket(); cs.Form = this; public void AddMessage(string Msg) { TxtMessageList.Text += Msg + Environment.NewLine;

基本上,我有一个类来处理一些websocket的事情,当收到一条消息时,就会触发下面看到的类代码。messagebox可以正常启动并显示数据,但是文本没有输入到文本框中,它似乎崩溃了,没有出现错误

表格编号:

CreateSocket cs = new CreateSocket();
cs.Form = this;

public void AddMessage(string Msg)
{
    TxtMessageList.Text += Msg + Environment.NewLine;
}
类别代码:

public FrmMain Form;
Form.AddMessage(Json.Message.Sender.Username + ": " + Json.Message.Message);

我只想做一点假设,您没有将表单的现有实例传递给您的类

您需要这样做:

class YourAppenderClass {
    private FrmMain _form;

    public YourAppenderClass(FrmMain form) {
        _form = form;
    }

    public void AddMessage(string msg) {
        _form.TxtMessageList.Text += msg + Environment.NewLine;
    }
}
将现有实例(
this
)传递给类。您可以使用该实例来执行所需的操作

…这样称呼它:

YourAppenderClass appender = new YourAppenderClass(this); // "this" is your main form
appender.AddMessage("Blah");
或者,您可以使用现有实例调用您提供的非静态方法:

// somewhere in the class..
_form.AddMessage("Blah"); // _form works because it is the instance you passed in

你能告诉我们这门课怎么叫吗?我怀疑您正在创建表单的新实例,而没有使用现有实例。该类是如何调用的?你是说表格法吗。如果是这样的话,它已经在那里了,看起来我正在创建一个新实例。但是我知道对表单调用方法的唯一方法是将其设置为静态,然后我不能向文本框中添加文本;然后在创建类的实例时执行了此操作:class.Form=this;但现在它崩溃了,没有错误?我更新了它,在底部包含了你的操作方式。现在修复了它,这是我做事情的方式。谢谢你帮我解决了课堂上的问题!