我有一份清单
List<String> SampleList=new List<String>();
Run Code Online (Sandbox Code Playgroud)
我需要用列表的内容填充listView
例如,"SampleList"包含
a
b
c
d
Run Code Online (Sandbox Code Playgroud)
listView应该像是一样填充
S.No Item
1 a
2 b
3 c
4 d
Run Code Online (Sandbox Code Playgroud)
现在我正在为这个方法使用for循环
喜欢
for(int i=0;i<SampleList.Count;i++)
{
listView1.Items.Add((i+1).ToString());
listView1.Items[i].SubItems.Add(SampleList[i]);
}
Run Code Online (Sandbox Code Playgroud)
还有其他方法可以像数据绑定那样做吗?
提前致谢
它必须是一个ListView?ListBox很简单:
using (Form form = new Form())
{
List<string> strings = new List<string> {"abc", "def", "ghi"};
form.Controls.Add(new ListBox() {DataSource = strings});
Application.Run(form);
}
Run Code Online (Sandbox Code Playgroud)
对于更丰富的显示,DataGridView也可以这样做,但是你需要额外的一点间接(因为它支持多个列,每行需要一个包装器对象):
using (Form form = new Form())
{
List<string> strings = new List<string> {"abc", "def", "ghi"};
var indirect = (from s in strings
select new {Text = s}).ToList();
form.Controls.Add(new DataGridView() { DataSource = indirect });
Application.Run(form);
}
Run Code Online (Sandbox Code Playgroud)
这也为您提供了添加额外数据的机会,例如:
var indirect = strings.Select((s,i) =>
new {Index = i + 1, Text = s}).ToList();
Run Code Online (Sandbox Code Playgroud)
不像数据绑定,但您可以使用VirtualMode和RetrieveVirtualItem
listView1.VirtualMode = true;
listView1.RetreiveVirtualItem += new RetrieveVirtualItemEventHandler( this.RetrieveVirtualItem );
listView1.VirtualListSize = SampleList.Count;
private void RetreiveVirtualItem( object sender, RetrieveVirtualItemEventArgs e )
{
ListViewItem lvItem = new ListViewItem((e.ItemIndex + 1).ToString());
lvItem.SubItems.Add(SampleList[e.ItemIndex]);
e.Item = lvItem;
}
| 归档时间: |
|
| 查看次数: |
14287 次 |
| 最近记录: |