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

本文关键字:文本 窗体 数据 | 更新日期: 2023-09-27 17:59:53

基本上,我有一个处理一些websocket事务的类,当收到消息时,就会触发下面的类代码。消息框会很好地启动并显示数据,但文本没有输入到文本框中,它似乎只是崩溃了,没有任何错误。

表单代码:

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