2011-07-05 36 views
1

我在用戶控件中的詳細模式下有一列ListView。我已經通過設計師添加了一個項目,它顯示正常。但是,我以編程方式添加的任何內容都不會顯示在列表中。 ListView.Items.Count屬性是正確的,但。無法看到ListViewItems以編程方式添加到UserControl中的ListView中?

我已經將添加的代碼和列表視圖複製到主窗體中,並且一切正常顯示。

// 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

我有一個類似的功能與用戶控件如下:

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控制構造。

0

當您以編程方式執行此操作時,您需要先創建至少一列。

相關問題