无法看到列表视图项以编程方式添加到UserControl中的ListView?

时间:2011-07-05 22:44:33

标签: c# .net winforms listview user-controls

我在详细模式下的用户控件中有一个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 :(得分:0)

我有一个与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控件传递给构造函数。

答案 1 :(得分:0)

以编程方式执行此操作时,首先需要创建至少一列。