C# 无法在UserControl中查看以编程方式添加到ListView的ListViewItems?
我在用户控件的详细信息模式下有一个ListView,其中有一列。我通过设计器添加了一个项目,它显示得很好。然而,我通过编程添加的任何内容都不会显示在列表中。但是ListView.Items.Count属性是正确的 我已将添加代码和列表视图复制到主窗体中,所有内容都显示良好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
// 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控件传递给构造函数。以编程方式执行此操作时,需要首先至少创建一列