如何在启动时从txt文件填充lstbox

时间:2013-12-15 20:49:16

标签: c# listbox startup

我需要在启动时从文本文件填充列表框。我还需要从列表框中删除第2行以及所有空行,但现在还不重要。我目前只是填充了列表框。到目前为止,这是我的代码:

struct CDCLocationEntry
{
    public string name;
}

public partial class StartupForm : Form
{
    private List<CDCLocationEntry> CDCList = new List<CDCLocationEntry>();

    public StartupForm()
    {
        InitializeComponent();
    }

    private void ReadFile()
    {
        try
        {
            StreamReader inputFile;
            string line;

            CDCLocationEntry entry = new CDCLocationEntry();

            inputFile = File.OpenText("P3S1 Data File For Import.txt");

            while (!inputFile.EndOfStream)
            {
                line = inputFile.ReadLine();

                CDCList.Add(entry);
            }

        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }

    private void DisplayText()
    {
        foreach (CDCLocationEntry entry in CDCList)
        {
            CDCLocationListBox.Items.Add(entry.name);
        }
    }

    private void StartupForm_Load(object sender, EventArgs e)
    {
        ReadFile();

        DisplayText();
    }
视觉工作室说我的问题在这里:

struct CDCLocationEntry     {         公共字符串名称;     }

我得到的信息是:

  

警告1字段&#39; Project_3 ___ Section_1.CDCLocationEntry.name&#39;永远不会   分配给,并且将始终具有其默认值null

我的笔记或在线帮助都没有给我答案。

非常感谢您提供的任何帮助

1 个答案:

答案 0 :(得分:4)

您需要在循环中创建一个CDCLocationEntry实例,并在此实例属性name中指定来自您文件的行

inputFile = File.OpenText("P3S1 Data File For Import.txt");
while (!inputFile.EndOfStream)
{
    CDCLocationEntry entry = new CDCLocationEntry();
    entry.name = inputFile.ReadLine();
    CDCList.Add(entry);
}

您的实际代码在循环外只创建一个CDCLocationEntry实例,并且在不向name属性赋值的情况下,在每个循环中添加相同的实例。