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); } }
