C#向listview添加项目会被线程窃听吗?

时间:2016-07-31 14:17:29

标签: c# listview

所以我有一段代码可以向listView添加信息,但似乎它有点被“窃听”了。所以,我有2条信息。它完美地添加了一个,但如果它添加第二个它告诉我,它已经存在于那里&向我展示了第一个项目名称,因此基本上它以某种方式尝试添加相同的项目2次。

info.Text = Username;
info.SubItems.Add(Password);
info.SubItems.Add(Points.ToString());
info.SubItems.Add(Level.ToString());
listView1.Items.Add(info);

我还尝试通过查看用户名,密码等的控制台输入来“调试”它。所有这些都是不同的。

// EDIT

我刚刚进行了第二次调试,如果信息传递给addItems()void,那么数据会发生变化,所以我认为线程会以某种方式进行调试。

1 个答案:

答案 0 :(得分:0)

如果这不是您正在寻找的解决方案,请道歉。由于缺乏关于你的问题的详细信息,这是根据我可能理解的内容做出的

信息是自定义类吗?如果是这样,我会假设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());