C# 如何用列表的内容填充列表视图<;字符串>;在C中#
我有一张单子C# 如何用列表的内容填充列表视图<;字符串>;在C中#,c#,C#,我有一张单子 List<String> SampleList=new List<String>(); listView应该像这样填充 S.No Item 1 a 2 b 3 c 4 d 现在我使用for循环来实现这个方法 像 for(int i=0;i不幸的是,windows窗体ListView不支持数据绑定。但是如果您经常更新列
List<String> SampleList=new List<String>();
listView应该像这样填充
S.No Item
1 a
2 b
3 c
4 d
现在我使用for循环来实现这个方法
像
for(int i=0;i不幸的是,windows窗体ListView不支持数据绑定。但是如果您经常更新列表,也许可以使用INotifyProperty界面。它必须是ListView
?列表框
很简单:
using (Form form = new Form())
{
List<string> strings = new List<string> {"abc", "def", "ghi"};
form.Controls.Add(new ListBox() {DataSource = strings});
Application.Run(form);
}
这也为您提供了添加额外数据的机会,例如数字:
var indirect = strings.Select((s,i) =>
new {Index = i + 1, Text = s}).ToList();
不太像数据绑定,但可以使用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;
}
listView1.VirtualMode=true;
listView1.RetreiveVirtualItem+=新的RetrieveVirtualItemEventHandler(this.RetrieveVirtualItem);
listView1.VirtualListSize=SampleList.Count;
私有void RetrieveVirtualItem(对象发送方,RetrieveVirtualItemEventArgs e)
{
ListViewItem lvItem=新的ListViewItem((e.ItemIndex+1.ToString());
lvItem.SubItems.Add(SampleList[e.ItemIndex]);
e、 项目=lvItem;
}
@Mohammadreza:谢谢……请解释INotifyProperty接口。我不确定更改通知是否是问题的关键部分。@Marc:在我看来,如果您经常需要更新基础组件,数据绑定是有用的。在本例中为ListView。@Pramodh:我非常熟悉该接口(顺便说一句,在这种情况下哪个不适用;它主要是IBindingList
和IBindingListView
),但这与问题无关。。。
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);
}
var indirect = strings.Select((s,i) =>
new {Index = i + 1, Text = s}).ToList();
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;
}