代码之家  ›  专栏  ›  技术社区  ›  Thorin Oakenshield

如何用C中list<string>的内容填充列表视图#

c#
  •  9
  • Thorin Oakenshield  · 技术社区  · 15 年前

    我有一张单子

        List<String> SampleList=new List<String>();
    

    我需要用列表的内容填充列表视图

    例如,“SampleList”包含

     a
     b
     c
     d
    

    listView应该像这样填充

     S.No         Item
    
      1             a
      2             b
      3             c
      4             d
    

    喜欢

    for(int i=0;i<SampleList.Count;i++)
       {
         listView1.Items.Add((i+1).ToString());
         listView1.Items[i].SubItems.Add(SampleList[i]);
       }
    

    3 回复  |  直到 15 年前
        1
  •  5
  •   jmoreno    15 年前

    不太像数据绑定,但可以使用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;
    }
    
        2
  •  5
  •   Marc Gravell    15 年前

    必须是一个 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);
            }
    

    为了更丰富的显示, 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);
            }
    

    这也为您提供了添加额外数据的机会,例如数字:

                var indirect = strings.Select((s,i) =>
                    new {Index = i + 1, Text = s}).ToList();
    
        3
  •  0
  •   mrtaikandi    15 年前