Добавление списка в TableLayoutPanel через цикл - PullRequest
0 голосов
/ 25 марта 2011

У меня есть файл, в котором хранится информация о рейсе, а затем у меня есть форма поиска, которая позволяет пользователю выбрать начальный город и штат, город и штат назначения, дату отъезда и количество мест, которые он хочет забронировать.

Затем я получаю результаты совпавших полетов, напечатанные в TableLayoutPanel. Моя проблема заключается в том, что когда программа просматривает рейсы, она добавляет их, но если она находит несколько рейсов, все предыдущие индексы заменяются текущими. Вот мой код, который выполняет поиск по рейсам (списки всех списков меток):

    private void searchFlights()
    {
        StreamReader sr = File.OpenText("F:\\C#\\Airline\\Flight.txt");
        string read = null;
        Button button = new Button();
        button.Text = "Book";
        totalSeats = int.Parse(peopleSearchComboBox.Text);
        while ((read = sr.ReadLine()) != null)
        {
            String[] flights = read.Split(' ');
            testSeats = int.Parse(flights[6]);
            if (cityStartSearchTextBox.Text == flights[2] & stateStartComboBox.Text == flights[3] & cityDestinationSearchTextBox.Text == flights[4] &
                stateDestComboBox.Text == flights[5] & dateSearchTextBox.Text == flights[7] & totalSeats <= testSeats)
            {
                airlineSearchLabel.Text = flights[0];
                priceSearchLabel.Text = flights[1];
                seatSearchLabel.Text = flights[6];
                startCityLabel.Text = flights[2];
                startStateLabel.Text = flights[3];
                endCityLabel.Text = flights[4];
                endStateLabel.Text = flights[5];

                price.Add(priceSearchLabel);
                airline.Add(airlineSearchLabel);
                seatsMatch.Add(seatSearchLabel);
                buttons.Add(button);
                cityStartMatch.Add(startCityLabel);
                stateStartMatch.Add(startStateLabel);
                cityDestMatch.Add(endCityLabel);
                stateDestMatch.Add(endStateLabel);
                flightsMatched++;
                Console.WriteLine(airline[0].Text); //I have this to check the index and on each pass through its different
            }
        }
        sr.Close();
    }

А вот мой код для печати его на стол:

private void fillTable()
    {
        blankTableLabel.Text = "";
        priceTableLabel.Text = "Price";
        seatsTableLabel.Text = "Open Seats";
        airlineTableLabel.Text = "Airline";
        noMatchedFlightsLabel.Text = "No Matches Found";
        flightsSearchedTable.RowCount = flightsMatched + 1;
        flightsSearchedTable.Controls.Add(blankTableLabel,0,0);
        flightsSearchedTable.Controls.Add(priceTableLabel,1,0);
        flightsSearchedTable.Controls.Add(airlineTableLabel,2,0);
        flightsSearchedTable.Controls.Add(seatsTableLabel,3,0);

        if (AppendTexts.totalFlights != 0 & flightsMatched != 0)
        {
            for (int x = 0; x < flightsMatched; x++)
            {
                if (WelcomeScreen.memberLoggedInCheck == true)
                {
                    flightsSearchedTable.Controls.Add(buttons[x]);
                    flightsSearchedTable.Controls.Add(price[x]);
                    flightsSearchedTable.Controls.Add(airline[x]);
                    flightsSearchedTable.Controls.Add(seatsMatch[x]);
                }
                else
                {
                    flightsSearchedTable.Controls.Add(price[x],1,x+1);
                    flightsSearchedTable.Controls.Add(airline[x],2,x+1);
                    flightsSearchedTable.Controls.Add(seatsMatch[x],3,x+1);
                }
            }
        }

И вот как будет выглядеть пример полета, который хранится в файле: Юго-запад 80 Остин Техас Майами Флорида 180 12/04/2011

Ответы [ 2 ]

0 голосов
/ 25 марта 2011

Не похоже, что у вас настроена панель макета таблицы, позволяющая добавлять несколько рейсов.

Я предполагаю, что вы используете visual studio.Создайте панель макета таблицы с помощью редактора пользовательского интерфейса и изучите код, который она создает в файле дизайна.Затем добавьте еще одну строку данных, снова изучите файл проекта и запишите, что было добавлено.

Убедитесь, что в вашем коде все, что VS делает для создания новой строки / столбца.

Затем попробуйте заполнить строки / столбцы в VS и убедитесь, что ваш код работает также

0 голосов
/ 25 марта 2011

Неважно, я смог понять это.Мне просто нужно было сбрасывать метки каждый раз при прохождении цикла.

...