我在详细模式下的用户控件中有一个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);
}
答案 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)
以编程方式执行此操作时,首先需要创建至少一列。