多线程中修改listview的SubItem
下面循环是在一个子线程中运行
for (int i = 0; i < ListView1.Items.Count; i++)
{
ListView1.Items[i].SubItems[0].Text= i.ToString();//修改
}
把上面修改的代码放在一委托中也不行,提示:
InvalidArgument=Value of '2' is not valid for 'index'.
Parameter name: index
private delegate void ChangeListViewHandler(int n);
private void ChangeListView(int n)
{
if (ListView1.InvokeRequired)
{
ListView1.Invoke(new ChangeListViewHandler(ChangeListView), new object[] { n});
}
else
{
ListView1.Items[n].SubItems[0].Text = n.ToString();
}
}
------解决方案--------------------
如果是多线程而且下面循环是在一个子线程中运行,我觉得应该
object o=new object();
lock(o){
for (int i = 0; i < ListView1.Items.Count; i++)
{
ListView1.Items[i].SubItems[0].Text= i.ToString();//修改
}
}
------解决方案--------------------看看你的n是几,感觉是你的索引问题~~~
------解决方案--------------------从你的代码来看你的那个循环代码没有必要放在线程中吧