发帖求助关于ListView中访问和插入数据的问题(对高手来说很简单)

FunnyRabbit 2010-10-22 05:00:59
首先是访问的问题,在界面这个类中有个ListView,从这个类我要将另一个类创建成线程,由该线程向其中插入数据。

很明显,这个线程无法直接操作这个ListView,即使我把他的属性改为public。

我不想在线程中将这个界面类重新new一下,然后操作ListView,而且重新new的方法也行不通

我想在界面那个类中创建一个static方法,这样线程就可以通过类名直接用了,但是当我把ListView的对象mailView放进去的时候它提示
错误 3 非静态的字段、方法或属性“CsharpMail.Mail.mailView”要求对象引用


还有没有办法能够让这个线程去操作这个ListView的??????????????????


还有就是ListView的对象mailView中有三列,我通过一下代码插入内容
item.SubItems.Add(i.ToString());
item.SubItems.Add(mailMessage.From);
item.SubItems.Add(mailMessage.Subject);
mailView.Items.Add(item);



但是发现i.ToString在第二列,mailMessage.From在第三列,mailMessage.Subject就没了

谁知道怎么向其中插入内容吗???
...全文
134 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
地狱男爵 2010-10-22
  • 打赏
  • 举报
回复
大侠啊 学习了
wuyq11 2010-10-22
  • 打赏
  • 举报
回复
private void Form1_Load(System.Object sender, System.EventArgs e)
{
System.Threading.Thread td = new System.Threading.Thread(additem);
td.Start();
}
public delegate void addInvo();
public void additem()
{
if (ListView1.InvokeRequired == false) {
ListView1.Columns.Add("ID");
ListView1.Columns.Add("Data");
ListView1.Items.Add("0");
ListView1.Items(0).SubItems.Add("a");
ListView1.BackColor = Color.Yellow;
ListView1.View = View.Details;
} else {
addInvo del = new addInvo(additem);
ListView1.Invoke(del);
}
}
我是好人 2010-10-22
  • 打赏
  • 举报
回复
可以用委托啊,创建一个ListBox的委托,在线程里调用委托就可以了
机器人 2010-10-22
  • 打赏
  • 举报
回复
[Quote=引用楼主 funnyrabbit 的回复:]
首先是访问的问题,在界面这个类中有个ListView,从这个类我要将另一个类创建成线程,由该线程向其中插入数据。

很明显,这个线程无法直接操作这个ListView,即使我把他的属性改为public。
我不想在线程中将这个界面类重新new一下,然后操作ListView,而且重新new的方法也行不通

我想在界面那个类中创建一个static方法,这样线程就可以通过类名直接用了,但是当我……
[/Quote]

可以把listview传给线程,用 System.Threading.ParameterizedThreadStart
或者再用类把thread包装起来。
hejiasoft 2010-10-22
  • 打赏
  • 举报
回复
我在想一个问题,那个类你没有NEW的话,这个对象就为NULL,你咋发送信息过来。
air123456789 2010-10-22
  • 打赏
  • 举报
回复

//插入
this.listview1.Items.Add(new ListViewItem(new string[] {第一列, 第二列, 第三列}));


foreach (ListViewItem lv in lvShowFile.Items)
{
string li = lv.SubItems[1].Text;//获取第二列,索引从0开始。
}

//取出所有的,保存在数组lis中。
List<string> lis=new List<string>;
foreach (ListViewItem lv in listview1.Items)
{
string li = lv.SubItems[1].Text;//获取第二列,索引从0开始。
lis.Add(li)
}



昨天有人问了一样的问题。

111,129

社区成员

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

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

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