Accessing form members from another class

只愿长相守 提交于 2019-12-01 01:56:02

By typing this:

Form1 myForm = new Form1();

you create a new instance of your form (Form1), but instead I guess you should use existing instance which most likely has been initialized already.

One of the ways to do it:

var form = Form.ActiveForm as Form1;

if (form != null)
{
     form.TextValue = "test asdasd";
}

Though this is not very good design. Try to use custom events instead.

Maybe you should consider publishing an event in your tcpclient. Then your form will be able to listen to this event and display proper information.

em70

Assuming Memo inherits from Control and assuming you set it with the proper modifier, the problem you may be going through is that you're likely trying to set the text from a worker thread (the one that's used to run the TCP client). If that's the case, then you need to check the InvokeRequired field of your control and if true invoke a delegate that will set the text for you. Below is a short and easy C# snippet.

private void SetTextOnMemo(string txt){
    if(Memo.InvokeRequired){
        Memo.Invoke(SetTextOnMemo, txt);
    }
    else{
        Memo.Text = txt;
    }
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!