Когда форма загружает прочитанный текстовый файл в массив - PullRequest
0 голосов
/ 17 апреля 2009

Я работаю над приложением C #, где при загрузке формы я хочу, чтобы она читала содержимое txt-файла и сохраняла его в массив. Затем, когда вы нажимаете кнопку в форме, я хочу, чтобы событие нажатия кнопки получило доступ к массиву. Как передать массив в событие нажатия кнопки? Мой код ниже имеет ошибку «statusArray не существует в текущем контексте» и связан со ссылкой на массив в событии нажатия кнопки. Что мне нужно сделать?

Susan

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 ]

2 голосов
/ 17 апреля 2009

Сохраните 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 голос
/ 17 апреля 2009

ArrayList не то же самое, что Array, и если вы используете .Net 2.0 или более поздние ArrayList evil .

Что касается причины, по которой это не удается: ваш массив адресов ограничен функцией Reports_Load (). Вы хотите переместить его на уровень класса и объявить как List<string>.

Другой вариант, если вы действительно хотите массив - использовать метод класса файлов .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");
}
1 голос
/ 17 апреля 2009

перемещает ваше объявление arrayList вне метода Reports_Load(object sender, EventArgs e), что делает его классом глобальным.

Вы также можете найти List<string>, который будет лучше хранить ваши данные в (строго напечатанном)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...