WinForms动态列表框

时间:2010-04-01 13:19:55

标签: c# winforms

我想要做的是从分隔的文本文件创建一个列表框。

列表框将根据文本文件的行填充X#行。列表框将有3列,每列都是从特定的分隔符填充的。这可能在C#中吗?任何出发点都会很棒!


嗯,我需要研究我的解释技巧。我想知道的是,它是否可以制作一个包含列和行的列表框?

2 个答案:

答案 0 :(得分:0)

如果您想要多个列,则需要使用ListView而不是ListBox

ListView lv = new ListView();
using (FileStream fs = new FileStream(@"c:\whatever.txt", FileMode.Open))
{
    StreamReader reader = new StreamReader(fs);
    while (!reader.EndOfStream)
    {
        string line = reader.ReadLine(); // e.g. "BOB|SMITH|JR."
        string[] coldata = line.Split('|');
        ListViewItem item = new ListViewItem(coldata);
        lv.Items.Add(item);
    }
}

注意:将ListView放在表单上时,将模式设置为Details并添加所需的列标题。

答案 1 :(得分:0)

我建议您使用ListView(也设置详细信息视图,并添加包含三列的标题)。

private void addLineToListView(String col1Text, String col2Text, String col3Text)
    {
        ListViewItem lvItem;
        if ((lvItem = this.listView1.Items.Add(col1Text)) != null)
        {
            lvItem.SubItems.Add(col2Text);
            lvItem.SubItems.Add(col3Text);
        }
    }

加载文件也很简单:

  private void AggregateTextFileIntoListView(String pathToFile)
  {
      using (TextReader tr = new StreamReader(pathToFile)))
            {
                String line;
                while ((line = tr.ReadLine()) != null)
                {
                    //* let's delimiter be ";".
                    String[] lineParts = line.Split(';');
                    addLineToListView(lineParts[0], lineParts[1], lineParts[2]);
                }

                tr.Close();
            }
 }