很多人都曾遇到过一件事,我明明已经对这个控件赋值了,或者对这个控件进行了什么操作,但是操作无效。我就曾遇到过这个问题。当时我上网搜了一下。其中可能出现的问题就是我在子线程中调用主线程中的控件。当时给出的答案都是使用委托来解决这件事。以下是我解决问题的方法。
第一种(这个是子线程在主窗口类中调用控件)
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);