int day = Int32.Parse(txtPrice.Text);
double p = 0;
if (listView1.SelectedItems.Count == 0)
{
MessageBox.Show("请选择一个需要结算的车辆");
}
else
{
//控件的选择项的文本内容
string key = listView1.SelectedItems[0].Text;
//调用子类的费用算法
p = rentVehicles[key].CalcPrice(day);
MessageBox.Show("费用为:" + p.ToString() + "元");
vehicle.Add(key, rentVehicles[key]);
rentVehicles.Remove(key);
listView1.SelectedItems.Clear();
Get(rentVehicles, listView1);
}
小结:当选定Listview的其中一个选项时,通过泛型(每个泛型相当于一个对象。可以直接点出来方法!!前提2个继承类需要有相同方法)! 这是思路问题!!
C# Listview的绑定
//传递泛型和控件参数,做到同一页面的传参!一个方法多次应用
private void Get(Dictionary<string, Vehicle> vehicle, ListView list)
{
list.Items.Clear();
foreach (Vehicle vh in vehicle.Values)
{
//1步
ListViewItem items = new ListViewItem(vh.LicenseNo);
if (vh is Car)
{
//2步
items.SubItems.AddRange(new string[] { vh.Name, vh.Color, vh.YearsOfService.ToString(), vh.Dailyren.ToString(), "无" });
}
else if (vh is Truck)
{
items.SubItems.AddRange(new string[] { vh.Name, vh.Color, vh.YearsOfService.ToString(), vh.Dailyren.ToString(), ((Truck)vh).Load.ToString() });
}
//3步
list.Items.Add(items);
}
}