Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法在UserControl中查看以编程方式添加到ListView的ListViewItems?_C#_.net_Winforms_Listview_User Controls - Fatal编程技术网

C# 无法在UserControl中查看以编程方式添加到ListView的ListViewItems?

C# 无法在UserControl中查看以编程方式添加到ListView的ListViewItems?,c#,.net,winforms,listview,user-controls,C#,.net,Winforms,Listview,User Controls,我在用户控件的详细信息模式下有一个ListView,其中有一列。我通过设计器添加了一个项目,它显示得很好。然而,我通过编程添加的任何内容都不会显示在列表中。但是ListView.Items.Count属性是正确的 我已将添加代码和列表视图复制到主窗体中,所有内容都显示良好 // user control public void AddFiles(IEnumerable<string> files) { // this doesn't work - list view does

我在用户控件的详细信息模式下有一个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);
}

我有一个与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.ListViewItemCollection,它将拥有的ListView控件传递给构造函数。

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