抱歉我的英语不好:(。
嗨,如何将项目添加到我放入List的ListView中?
我试过这个:
listView1.Items.Add(pluginContainer);
但这似乎不起作用:(。
我无法创建一个foreach循环,因为这将填充ListView需要10秒钟(我说的是5000多项)。
这解决了它:
listView1.Items.AddRange(pluginContainer.ToArray());
答案 0 :(得分:1)
如果列表中的项目都是ListViewItem类型,则可以使用AddRange。如果它们不是,那么你将不得不从它们中创建ListViewItems,或者使用for循环。
在任何一种情况下,您都应该在添加项目时努力提高ListView的性能,方法是首先在其上调用SuspendLayout。添加完所有项目后,请致电ResumeLayout。
答案 1 :(得分:0)
试试这个:
public enum State
{
AL, GA, FL, SC, TN, MI
}
public class Person
{
public int ID { get; set; }
public string Name { get; set; }
public State State { get; set; }
// Converts properties to string array
public string[] ToListViewItem()
{
return new string[] {
ID.ToString("00000"),
Name,
State.ToString() };
}
}
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
//Setup list view column headings and widths
listView1.Columns.Add("ID", 48);
listView1.Columns.Add("Name", 300);
listView1.Columns.Add("State", 48);
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
// Create a list
List<Person> list = new List<Person>();
// Fill in some data
list.Add(new Person() { ID=1001, Name="John", State=State.TN });
list.Add(new Person() { ID=1002, Name="Roger", State=State.AL });
list.Add(new Person() { ID=1003, Name="Samantha", State=State.FL});
list.Add(new Person() { ID=1004, Name="Kara", State=State.MI});
// Fill in ListView from list
PopulateListView(list);
}
void PopulateListView(List<Person> list)
{
listView1.SuspendLayout();
for(int i=0; i<list.Count; i++)
{
// create a list view item
var lvi = new ListViewItem(list[i].ToListViewItem());
// assign class reference to lvi Tag for later use
lvi.Tag = list[i];
// add to list view
listView1.Items.Add(lvi);
}
//This adjust the width of 1st column to fit data.
listView1.AutoResizeColumn(0, ColumnHeaderAutoResizeStyle.ColumnContent);
listView1.ResumeLayout();
}
}