很多人都曾遇到过一件事,我明明已经对这个控件赋值了,或者对这个控件进行了什么操作,但是操作无效。我就曾遇到过这个问题。当时我上网搜了一下。其中可能出现的问题就是我在子线程中调用主线程中的控件。当时给出的答案都是使用委托来解决这件事。以下是我解决问题的方法。
第一种(这个是子线程在主窗口类中调用控件)
this.Invoke((EventHandler)(delegate { InformationText.Text = SelectValueAssemable; }));
第二种(这个是在子线程类中调用控件,Tools是主窗口类)
Tools.tools.InformationText.Invoke(new Action(() =>{Tools.tools.InformationText.Text = SelectValueAssemable;}));
在网上我看到了另外一种方法,但是还是操作无效,也不知道是什么原因。
//主窗口类中
public delegate void SetText_delegate(string sssext);public void SetText(string str){this.InformationText.Text = str;}//子线程类中Tools tools = new Tools();Tools SetText_delegate setText_Delegate = new Tools.SetText_delegate(tools.SetText);setText_Delegate.Invoke(Tools.SelectValueAssemable);