Я пропускаю заявление if? - PullRequest
0 голосов
/ 02 декабря 2010

заранее спасибо за любую помощь!

Немного предыстории: в основном я создаю приложение, которое хранит транспортные средства (автомобили, грузовики, автобусы), у меня есть суперкласс транспортных средств и все отдельные классы (car.cs, truck.cs, minibus.cs)унаследовать от этого суперкласса.

У меня также есть класс под названием «fleet», в который я хотел бы добавить транспортные средства, чтобы затем отобразить результаты в окне списка.

У меня есть все остальноеработает, но я не могу заставить грузовики и микроавтобусы обновляться и отображать в списке, как это делают машины.

Вот мой класс автопарка, который включает car.cs;и он работает нормально, и данные, взятые из автомобильной формы, добавляются и отображаются в списке.

class Fleet
{
    private List<Vehicle> theFleet = new List<Vehicle>(); 

    public List<Vehicle> fleet 
    {
        get
        {
            return theFleet;
        }
    }

    public void deleteFromFleet(Vehicle aCar)
    {
        theFleet.Remove(aCar);
    }

    public void addToFleet(Vehicle aCar)
    {
        theFleet.Add(aCar);
    }
}

Вот моя основная форма, в которой есть список:

public partial class FrmHireCo : Form
{
    private Fleet myFleet = new Fleet();
    private ClientList mycustomer = new ClientList();

    //Fleet object used to store cars

    public FrmHireCo()
    {
        //Default constructor
        InitializeComponent();                
    }        

    private void updateFleetList()
    {   
        lstFleet.Items.Clear();
        foreach (Car c in myFleet.fleet)
        {
            string line = "Car: " + c.make+" " + c.colour;
            lstFleet.Items.Add(line);
        }
    }

    private void updateClientList()
    {   
        customers.Items.Clear();
        foreach (Customer c in mycustomer.clientlist)
        {
            string line = "Customer: " + c.name + " " + c.address;
            customers.Items.Add(line);
        }
    }

    private void btnAddCar_Click(object sender, EventArgs e)
    {
        //Add a new car
        FrmCar carGui = new FrmCar(); //Form used to add new car
        carGui.ShowDialog();
        Car myCar = carGui.car;         //Get new car from form
        myFleet.addToFleet(myCar);      //Add to fleet list
        updateFleetList();              //Uodate fleet list
    }

    private void lstFleet_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (lstFleet.SelectedIndex > -1)
        {
            int index = lstFleet.SelectedIndex;
            Car myCar = myFleet.fleet.ElementAt(index);
            FrmCar carGui = new FrmCar();
            carGui.car = myCar;
            carGui.Show();
        }
    }

    private void btnCustomer_Click(object sender, EventArgs e)
    {
        FrmCustomer customerGui = new FrmCustomer();
        customerGui.ShowDialog();
        Customer mycustomer = customerGui.customer;         
        mycustomer.addToClientList(mycustomer);      
        updateFleetList();
    }

    private void customers_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (customers.SelectedIndex > -1)
        {
            int index = customers.SelectedIndex;
            Customer myCustomer = mycustomer.clientlist.ElementAt(index);
            FrmCustomer customerGui = new FrmCustomer();
            customerGui.customer = myCustomer;
            customerGui.Show();
        }
    }
}

Ура за любую помощь!

Ответы [ 2 ]

1 голос
/ 02 декабря 2010

Вы должны включить все транспортные средства.

private void updateFleetList()
{   
    lstFleet.Items.Clear();
    foreach (Vehicle v in myFleet.fleet)
    {
        lstFleet.Items.Add(v);  
    }
}

Кроме того, просто переопределите ToString во всех ваших подклассах Vehicle, и ListBox будет использовать это по своей природе; таким образом, не каждому Vehicle требуется свойство Make или Color.

1 голос
/ 02 декабря 2010
private void updateFleetList()
    {   
        lstFleet.Items.Clear();
        foreach (Vehicle c in myFleet.fleet)
        {
            string line = "Car: " + c.make+" " + c.colour;
            lstFleet.Items.Add(line);
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...