方法1:关闭跨线程操作的检查,在构造函数里面添加:System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;,但是此方法不推荐使用。
方法2:(推荐使用此方法)在访问的地方找回创建控件的线程,拿创建控件的线程去操作该控件。代码如下:
if(textBox1.InvokeRequired) //是否是别的线程创建此控件的
{
//找到创建textBox1控件的线程,执行委托
textBox1.Invoke(new Action<string>(s => {this.textBox1.Text = s; }), "测试1");
}
else
{
textBox1.Text = "测试2";
}