当表单将读取文本文件加载到数组中时

时间:2009-04-17 15:03:42

标签: c# arraylist

我正在开发一个C#应用程序,当表单加载时,我希望它读取txt文件的内容并将其存储到数组中。接下来,当单击表单上的按钮时,我希望按钮单击事件访问该数组。如何将数组传递给按钮单击事件?我的下面的代码有一个错误“statusArray在当前上下文中不存在”,并且与按钮单击事件中对数组的引用有关。我需要做什么?

苏珊

private void btnCompleted_Click(object sender, EventArgs e)
    {

        for (int i = 0; i < statusArray.Count; i++)
        {
            if (statusArray[i].Equals("Complete"))

                lstReports.Items.Add(statusArray[i-2]);

        }
    }

    private void Reports_Load(object sender, EventArgs e)
    {
        // declare variables
        string inValue;
        string data;
        ArrayList statusArray = new ArrayList();


        inFile = new StreamReader("percent.txt");

        // Read each line from the text file

        while ((inValue = inFile.ReadLine()) != null)
        {
            data = Convert.ToString(inValue);
            statusArray.Add(inValue);

        }

        // Close the text file
        inFile.Close();


    }

3 个答案:

答案 0 :(得分:2)

将ArrayList作为成员变量存储在表单上,​​如下所示:

private ArrayList statusArray = new ArrayList();

private void btnCompleted_Click(object sender, EventArgs e) {

    for (int i = 0; i < statusArray.Count; i++)
    {
        if (statusArray[i].Equals("Complete"))

            lstReports.Items.Add(statusArray[i-2]);

    }
}

private void Reports_Load(object sender, EventArgs e)
{
    // declare variables
    string inValue;
    string data;

    inFile = new StreamReader("percent.txt");

    // Read each line from the text file

    while ((inValue = inFile.ReadLine()) != null)
    {
        data = Convert.ToString(inValue);
        statusArray.Add(inValue);

    }

    // Close the text file
    inFile.Close();


}

答案 1 :(得分:1)

将您的arrayList声明移到Reports_Load(object sender, EventArgs e)方法之外,这使它成为一个全局类。

您可能还会发现List<string>最好将数据存储在(强类型)中

答案 2 :(得分:1)

ArrayList与不是与数组相同,如果你使用.Net 2.0或更高版本,则ArrayLists evil

至于失败的原因:你的arraylist的范围是Reports_Load()函数。您希望将其移至类级别,并声明为List<string>

如果你真的想要一个数组,另一个选择就是使用File类'.ReadAllLines()方法。

private string[] status;

private void btnCompleted_Click(object sender, EventArgs e)
{
    for (int i = 2; i < status.Length; i++)
    {
        if (status[i] == "Complete")
            lstReports.Items.Add(status[i-2]);

    }
}

private void Reports_Load(object sender, EventArgs e)
{
    status = File.ReadAllLines("percent.txt");
}