2016-07-31 1 views
0

Итак, у меня есть фрагмент кода, который добавляет информацию в listView, но похоже, что он получает от «прослушивание». Итак, у меня есть 2 части информации. Он добавляет один отлично, но если он добавляет второй, он говорит мне, что он уже существует там. & показывает мне первое имя элемента, поэтому в принципе он пытается добавить одно и то же 2 раза.C# Добавление элементов в listview получает прослушивание по потокам?

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

Я пробовал также «отлаживать» его, видя консольный ввод для имени пользователя, пароля и т. Д. Все они были разными.

// EDIT

Я просто сделал второй отладки, если информация переходит в руки AddItems() недействительными, то изменения данных, так что я думаю, что это каким-то образом получает прослушивается нитками.

+0

К сожалению, вы делаете 'новый ListViewItem (), 'каждый раз? –

+0

Не каждый раз, я вызывал его при запуске программы. –

+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()); 
+0

Хм, в основном. Получив информацию от серверов, она передаст информацию в addItem void, но, похоже, из-за переполнения информации об изменениях. Итак, если кто-то Питер, второй - Джеймс, и информация передается, тогда информация внутри абзаца addItem - это Питер и Питер. –

+0

Чтобы получить информацию, я использую Invoke, потому что это необходимо, но я не использую invoke при добавлении элементов, потому что кажется, что там не требуется. –

+0

Вы случайно создаете новые экземпляры информационного класса? Имейте в виду, если у вас есть объекты, статические, то может существовать только «один». Итак, возможно, создав новый инфо-экземпляр: info Peter = new Info() info James = new Info() then do ListView1.Items.Add (Peter); ListView1.Items.Add (James); Конечно, гораздо более надежным способом! –

Смежные вопросы