C#将项目添加到列表视图会被线程窃听
本文关键字:线程 窃听 视图 列表 项目 添加 | 更新日期: 2023-09-27 17:59:26
所以我有一段代码可以向listView添加信息,但它似乎有点"bug"。所以,我有两条信息。它完美地添加了一个,但如果它添加了第二个,它告诉我,它已经存在于那里&显示了我的第一个项目名称,所以基本上它尝试添加两次相同的东西。
info.Text = Username;
info.SubItems.Add(Password);
info.SubItems.Add(Points.ToString());
info.SubItems.Add(Level.ToString());
listView1.Items.Add(info);
我也试着"调试"它,通过看到控制台输入的用户名,密码等。所有这些都是不同的。
//编辑
我刚刚进行了第二次调试,如果信息被传递到addItems()void,那么数据就会发生变化,所以我认为它会被线程以某种方式窃听。
如果这不是您想要的解决方案,我们深表歉意。由于您的问题缺乏一些细节,这是根据我可能理解的内容制作的
info是自定义类吗?如果是这样的话,我假设SubItems也是一个List对象。如果这些场景是正确的,那么你的类应该看起来像
public class info
{
public string Text { get; set; }
public List<string> SubItems { get; set; }
/* Other Code */
}
现在,如果我没有错的话,您似乎正在尝试将数据序列化为字符串,然后添加到ListView?如果是这样的话,有几种方法可以做到这一点:
public class info
{
/* Other Code */
public override string ToString()
{
return $"Username: {Text}; Password: {SubItems[0]}; Points: {SubItems[1]}; Level: {SubItems[2]};"
}
}
现在,如果所有这些都是真的,你现在可以执行:
info PersonInfo = new Info()
{
Text = Username;
SubItems = new List<string>()
{
Password,
Points.ToString();
Level.ToString();
}
}
ListView1.Items.Add(ParsonInfo.ToString());