2014-02-03 4 views
3

У меня есть ListView в элементе управления вкладкой в ​​WinForm. Когда форма первые нагрузки я могу видеть все заголовки, как и ожидалось:ListView Элементы, которые не отображаются в ListView и столбцах, исчезают

enter image description here

Я заполнить ListView с подробной информацией о файлах:

string[] fileEntries = Directory.GetFiles(trNode.Tag.ToString(), "*.*", SearchOption.TopDirectoryOnly); 
int fileNo = 1; 
foreach (string fileName in fileEntries) 
{ 
    FileInfo oFileInfo = new FileInfo(fileName); 
    ListViewItem lvi = new ListViewItem(new string[] { fileNo.ToString(), oFileInfo.Name, oFileInfo.Extension, oFileInfo.Length.ToString(), oFileInfo.CreationTime.ToString() }); 
    lvFiles.Items.Add(lvi); 
    fileNo++; 
} 

После того как форма загрузилась столбец заголовков исчезли и нет товаров.

enter image description here

У меня нет кода, чтобы изменить visibity в ListView или любых контейнеров. Как вы можете видеть после загрузки, есть полоса прокрутки для ListView, которая, как я предполагаю, подсказывает, что она не скрыта.

Любые предложения были бы очень желанными!

UPDATE

ListView Items.Count говорит мне, что есть элемент в ListView. Даже незнакомец в том, что если я изменил представление на SmallIcons, я их вижу, в подробном представлении они исчезают! Если я сломаю код и посмотрю на предметы, они отлично смотрятся с правильными данными во всех правильных местах!

+0

Есть ли способ, которым вы можете запустить это с помощью отладчика и проверить, действительно ли список содержит элементы, которые вы добавляете? Например, поставьте lvFiles.items.count на часы или что-то еще и убедитесь, что они увеличиваются только до – metinoheat

+0

Также я заметил, что на второй части после того, как вы «добавили» элементы, вы потеряете заголовки столбцов? Это правда или это просто из-за прокрутки или чего-то еще? – metinoheat

+0

Отправленный код работает. панели, включенные? ListViewGroups и т. д. – LarsTech

ответ

10

Ответ на эту проблему было что-то очень стыдно! Вы можете сказать ошибку школьного мальчика.

Строка кода в рутине, которая очищает форму, в которой я пропустил жизненно важный элемент.

lvFiles.Clear();, который явно очищает все, включая заголовки, я изменил его на lvFiles.Items.Clear(); Это была одна из первых вещей, которые я искал и не могу поверить, что я ее пропустил. :(

+1

Это было очень полезно для меня. Я просто сделал то же самое, поэтому вы не одиноки на этом! –

+1

Yup, просто был виновен в этом ... Дух .. – AHowgego

+0

Это прекрасный пример полезности переполнения стека. –

1

, как о чем-то вроде этого

string[] fileEntries = Directory.GetFiles(trNode.Tag.ToString(), "*.*",  SearchOption.TopDirectoryOnly); 
int fileNo = 1; 
int ctr = 0 
foreach (string fileName in fileEntries) 
{ 
    FileInfo oFileInfo = new FileInfo(fileName); 

    lvFiles.Items.Add(fileNo.ToString()); 
    lvFiles.Items[ctr].SubItems.Add(oFileInfo.Name); 
    lvFiles.Items[ctr].SubItems.Add(oFileInfo.Extension); 
    lvFiles.Items[ctr].SubItems.Add(oFileInfo.Length.ToString()); 
    lvFiles.Items[ctr].SubItems.Add(oFileInfo.CreationTime.ToString()); 
    fileNo++; 
    ctr++; 
} 

надеюсь, что это помогает

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