2013-10-07 2 views
0

В настоящее время у меня есть ListBox (называемый wafersListBox), ограниченный ArrayList определенного типа объекта (называемый вафлями). Когда я хочу, чтобы добавить в ListBox динамически, я использую следующий код:Элементы ListBox Disappear

wafersListBox.DataSource = null; 
wafersListBox.DataSource = wafers; 
wafersListBox.Refresh(); 

Это успешно изменяет элементы в ListBox, но все предметы исчезают (они все еще там и могут быть выбраны, но пользователь просто не может их видеть).

Любые идеи о том, как исправить это?

UPDATE: Это мой вафельные класс:

public class Wafer 
{ 
    public string maID; 

    public string MID 
    { 
     get 
     { 
      return maID; 
     } 
     set 
     { 
      maID = value; 
     } 
    } 

    public Wafer(string m) 
    { 
     maID = m; 
    } 
} 

Это код, который я называю, это добавляет копию выбранного элемента в ListBox:

Wafer w = wafersListBox.SelectedItem as Wafer; 
wafers.Add(w);   

wafersListBox.DataSource = null; 
wafersListBox.DisplayMember = "MID"; 
wafersListBox.DataSource = wafers; 
wafersListBox.Refresh(); 
+0

Любая информация о элементах в вашем 'ArrayList'? –

+0

Я не вижу никакого кода, инициализирующего ваши 'вафли'? –

ответ

1

Вы должны вероятно, сообщите wafersListBox, какую собственность использовать в качестве подписи.

Сделайте это так;

wafersListBox.DisplayMember = "PropertyNameThatYouWantToShow"; 
+0

Спасибо, но я пробовал это, и он все равно делает то же самое –

+0

Не могли бы вы показать, что вы сделали? Также это поможет увидеть код объекта, который вы пытаетесь показать. Не могли бы вы обновить свой вопрос? –

0

К сожалению - я не могу добавить дополнительный комментарий, который был бы предпочтительнее, чем писать новый «ответ», но вы видите разницу, если вы переключите положение линий, как показано ниже?

Wafer w = wafersListBox.SelectedItem as Wafer; 
    wafers.Add(w);   

    wafersListBox.DataSource = null; 
    wafersListBox.DataSource = wafers; 
    wafersListBox.DisplayMember = "MID"; 
    wafersListBox.Refresh(); 

Еще одна вещь, которую я только что наткнулся на другой SO размещение (ListBox doesn't show changes to DataSource):

«Существует также ошибка в списке, который может вызвать эту проблему Если вы установите SelectionMode в None. эта проблема возникает.

В качестве работы я установил режим выбора на «Один», а затем обратно на «Нет» при обновлении источника данных ».

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