C#线程间操作无效: 从不是创建控件“dataGridView1”的线程访问它

来源:互联网 发布:windows有必要更新吗 编辑:程序博客网 时间:2024/06/05 05:04

搞了个程序,结果报错了,好几不写C#的程序,生疏了,做个备份


在父窗体调用了子窗体的方法,该方法中用到了子窗体的控件,结果“线程间操作无效: 从不是创建控件“dataGridView1”的线程访问它”。


解决方法:做个委托


1、private delegate void SetDtCallback(DataTable dt);


2、做个方法


private void SetDT(DataTable dt)
        {
            // InvokeRequired需要比较调用线程ID和创建线程ID
            // 如果它们不相同则返回true
            if (this.textBox1.InvokeRequired)
            {
                SetDtCallback d = new SetDtCallback(SetDT);
                this.Invoke(d, new object[] { dt });
            }
            else
            {
                this.dataGridView1.DataSource = dt;
            }
        }


3、把原来赋值的地方该成调用第2步中的方法


  SetDT(dt);
  //dataGridView1.DataSource = dt;

0 0
原创粉丝点击