0

基本的に、いくつかの 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);
4

1 に答える 1

0

フォームの既存のインスタンスをクラスに渡していないことを少し仮定します。

これを行う必要があります:

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
于 2013-02-17T23:43:04.430 に答える