【发布时间】:2010-12-03 00:37:46
【问题描述】:
提前感谢您的帮助!
一些背景知识基本上我正在构建一个存储车辆(汽车、卡车、公共汽车)的应用程序,我有一个车辆超类,所有单独的类(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();
}
}
}
为任何帮助干杯!
【问题讨论】:
-
您说您提供的代码有效。你能提供不起作用的代码吗?这就是你想要的帮助对吧?
-
我看到的唯一类型转换是 Car。我不确定您对公共汽车和小型货车的引用在哪里...另外我建议使用 List
而不是 List 。这样您就不需要对列表内容进行类型转换。确保清晰地声明接口契约,以便在接口中声明汽车、公共汽车和小型货车之间的所有共享属性和功能。 -
您发布的代码中没有任何内容实际上将卡车或小巴添加到列表框中。您正在使用的只是
Car对象。 -
另外,foreach(myFleet.fleet 中的汽车 c) 不应该是 foreach(myFleet.fleet 中的汽车 c)