多线程中修改listview的SubItem

swordman123 2008-07-25 10:46:52
下面循环是在一个子线程中运行
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();
}
}

...全文
194 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
laxila 2008-09-30
  • 打赏
  • 举报
回复
非常好,学习过了,谢谢楼主呀!!!
majiajun_no_2 2008-09-29
  • 打赏
  • 举报
回复
我同意 支持一下
lehedele 2008-09-28
  • 打赏
  • 举报
回复
新手学习中
treetor 2008-09-27
  • 打赏
  • 举报
回复
楼主辛苦了
formajia5 2008-09-25
  • 打赏
  • 举报
回复
学习中,增加点人气
majiajun_no_3 2008-09-25
  • 打赏
  • 举报
回复
努力学习中,一直观望
majiajun_no_7 2008-09-25
  • 打赏
  • 举报
回复
学习了,留个脚印
converf 2008-09-25
  • 打赏
  • 举报
回复
很有道理值得学习
swordman123 2008-07-30
  • 打赏
  • 举报
回复
前头忙去了,现在回来。问题解决了,逻辑没有问题,SubItems[1]忘记初试化了
谢谢各位!
zlkingdom 2008-07-25
  • 打赏
  • 举报
回复
从你的代码来看你的那个循环代码没有必要放在线程中吧
lovefootball 2008-07-25
  • 打赏
  • 举报
回复
看看你的n是几,感觉是你的索引问题~~~
wocow2316 2008-07-25
  • 打赏
  • 举报
回复
如果是多线程而且下面循环是在一个子线程中运行,我觉得应该
object o=new object();
lock(o){
for (int i = 0; i < ListView1.Items.Count; i++)
{
ListView1.Items[i].SubItems[0].Text= i.ToString();//修改

}
}

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧