2013-02-17 45 views
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); 
+0

你能告訴我們如何班級被稱爲?我懷疑你正在創建一個新的表單實例,而不是使用現有的實例。 – 2013-02-17 23:37:57

+0

班級被稱爲?你的意思是表單方法。如果是這樣,那已經在那裏,看來我正在創建一個新的實例。但我知道在窗體上調用方法的唯一方法是將其設置爲靜態,然後我無法將文本添加到文本框中。 – user1763295 2013-02-17 23:42:44

回答

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 
+0

我真的不明白你的意思,所以我在課堂上做了這個: public FrmMain Form; 然後當我創建該類的實例時執行此操作: class.Form = this; 但現在它只是崩潰沒有錯誤? – user1763295 2013-02-17 23:49:25

+0

我對它進行了更新,以包括您在底部進行操作的方式。 – 2013-02-17 23:50:50

+0

你能用更多相關的代碼更新你的問題嗎? – 2013-02-17 23:51:17

相關問題