c# winform 中,需要dataGridView 动态增加行,并且付值。使用线程会报出 :
线程间操作无效: 从不是创建控件“”的线程访问它。
在构造函数中增加 CheckForIllegalCrossThreadCalls =false,可以实现功能,但是只要窗体一动,程序就挂了!
好像有委托定义,怎么实现啊,我对委托这部分不太懂。大家帮我看看
Thread vThread = new Thread(new ThreadStart(this.Onsales));
vThread.Start();private void Onsales()(简化了很多行代码)
{
this.dataGridView1.RowCount++;(线程运行到此处错误。)
for (int m = 0; m < 5; m++)
{
dataGridView1.Rows[j].Cells[m_tempdt.Columns[m].ColumnName].Value = dr[j][m_tempdt.Columns[m].ColumnName].ToString();
}
}
线程间操作无效: 从不是创建控件“”的线程访问它。
在构造函数中增加 CheckForIllegalCrossThreadCalls =false,可以实现功能,但是只要窗体一动,程序就挂了!
好像有委托定义,怎么实现啊,我对委托这部分不太懂。大家帮我看看
Thread vThread = new Thread(new ThreadStart(this.Onsales));
vThread.Start();private void Onsales()(简化了很多行代码)
{
this.dataGridView1.RowCount++;(线程运行到此处错误。)
for (int m = 0; m < 5; m++)
{
dataGridView1.Rows[j].Cells[m_tempdt.Columns[m].ColumnName].Value = dr[j][m_tempdt.Columns[m].ColumnName].ToString();
}
}
{
datagridview.invoke(更新的方法,更新的方法所需参数数组);
}
else
{
//直接更新界面
}
{
this.Invoke(new MethodInvoke(delegate
{
this.dataGridView1.RowCount++;(线程运行到此处错误。)
for (int m = 0; m < 5; m++)
{
dataGridView1.Rows[j].Cells[m_tempdt.Columns[m].ColumnName].Value = dr[j][m_tempdt.Columns[m].ColumnName].ToString();
}
}));
}