Не можете увидеть ListViewItems, добавленные программно в ListView в UserControl? - PullRequest
1 голос
/ 06 июля 2011

У меня есть ListView в пользовательском элементе управления в режиме подробностей с одним столбцом. Я добавил элемент через дизайнер, и он отображается нормально. Однако все, что я добавляю программно, просто не отображается в списке. Однако свойство ListView.Items.Count является правильным.

Я скопировал код добавления и представление списка в основную форму, и все отображается нормально.

// user control
public void AddFiles(IEnumerable<string> files)
{
    // this doesn't work - list view doesn't show any new files
    ListViewItem[] items = files.Select(file => new ListViewItem(file)).ToArray();
    listView1.Items.AddRange(items);
}

// main form
private void AddFiles(IEnumerable<string> files)
{
    // call to the user control
    fileList.AddFiles(files);

    // test code works correctly - can see the added files in the list view
    ListViewItem[] items = files.Select(file => new ListViewItem(file)).ToArray();
    listView1.Items.AddRange(items);
}

Ответы [ 2 ]

0 голосов
/ 09 июля 2011

когда вы делаете это программно, вам нужно сначала создать хотя бы один столбец.

0 голосов
/ 06 июля 2011

У меня есть похожая функция с UserControl следующим образом:

using ListViewCollection = System.Windows.Forms.ListView.ListViewItemCollection;

void FillDirectories ( )
{
    IEnumerable<DirectoryInfo> pathDirInfos = currentPath.EnumerateDirectories ( );

    var dirItems = ( from d in pathDirInfos
                     select new ListViewItem
                     {
                         Name = d.Name,
                         Text = d.Name,
                     } )
                   .ToArray ( );

    ListViewCollection listItems = new ListViewCollection ( uxExplorerListView );
    listItems.AddRange ( dirItems );
}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...