merci d'avance pour toute aide! Un peu de fond, je construis une application qui stocke des véhicules (voitures, camions, bus), j'ai une superclasse de véhicule et toutes les classes individuelles (car.cs, truck.cs, minibus.cs) héritent de cette super classe.Ai-je une instruction if manquante?
J'ai également une classe appelée «flotte» que je voudrais ajouter les véhicules à un puis afficher les résultats dans une zone de liste.
J'ai tout le reste de travail mais je ne peux pas obtenir les camions et les minibus pour mettre à jour et afficher sur la liste comme les voitures font.
Voici ma classe de flotte qui comprend le car.cs; et cela fonctionne bien et les données extraites du formulaire de voiture sont ajoutées et affichées dans la liste.
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);
}
}
Voici ma principale forme, qui a la liste sur elle:
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();
}
}
}
Vive toute aide!
Vous avez dit que le code que vous avez fourni fonctionne. Pouvez-vous fournir le code qui ne fonctionne pas aussi bien? C'est ce que vous voulez de l'aide, n'est-ce pas? –
La seule typecasting que je vois est pour la voiture. Je ne suis pas sûr où vos références aux autobus et aux mini-fourgonnettes sont ... Aussi je recommanderais d'employer une liste plutôt que la liste . De cette façon, vous n'aurez pas besoin de typer le contenu de la liste. Assurez-vous d'indiquer clairement le contrat d'interface afin que toutes les propriétés et fonctions partagées entre les voitures, les bus et les minivans soient indiquées dans l'interface. –
code4life
Rien dans le code que vous avez posté ajoute réellement des camions ou des minibus à la liste. Tout ce que vous travaillez avec sont des objets 'Car'. –