标签:
1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Threading.Tasks; 9 using System.Windows.Forms; 10 11 namespace WinApp02_ListBox 12 { 13 public partial class Form1 : Form 14 { 15 public Form1() 16 { 17 InitializeComponent(); 18 } 19 // 20 // 加载窗口 21 private void Form1_Load(object sender, EventArgs e) 22 { 23 // 绑定列表数据 24 BindListData(); 25 } 26 /// <summary> 27 /// 绑定列表数据 28 /// </summary> 29 private void BindListData() 30 { 31 // 绑定多个图书信息实例 32 //List<Book> lstBook = new List<Book>() 33 //{ 34 // new Book() { ID = 1, Title = "ASP.NET", Price = 36.50m } , 35 // new Book() { ID = 2, Title = "C#本质论", Price = 55.80m } , 36 // new Book() { ID = 3, Title = "CRL", Price = 87.00m } , 37 // new Book() { ID = 4, Title = "ADO.NET", Price = 42.50m } , 38 // new Book() { ID = 5, Title = "Python", Price = 38.40m } 39 //}; 40 41 // 将lstBook中的数据遍历出来并存储到listBox1中. 42 //foreach (Book book in lstBook) 43 //{ 44 // // 自定义类型或非字符串类型,默认会显示其完全限定名(命名空间.类名: WinApp02_ListBox.Book) 45 // // 所以必须重写Book类的ToString()方法 46 // listBox1.Items.Add(book); 47 //} 48 49 List<Book> lstBook = new List<Book>(); 50 lstBook.Add(new Book() { ID = 1, Title = "ASP.NET", Price = 36.50m }); 51 lstBook.Add(new Book() { ID = 2, Title = "C#本质论", Price = 55.80m }); 52 lstBook.Add(new Book() { ID = 3, Title = "CRL", Price = 87.00m }); 53 lstBook.Add(new Book() { ID = 4, Title = "ADO.NET", Price = 42.50m }); 54 lstBook.Add(new Book() { ID = 5, Title = "Python", Price = 38.40m }); 55 56 // 指定数据源一次性绑定数据(同样,必须重写ToString()方法,否则即显示【命名空间.类名】 57 listBox1.DataSource = lstBook; 58 // 将对象属性作为列表显示的文字; 即Book.Title 59 listBox1.DisplayMember = "Title"; 60 // 指定对象的值属性作为"值"字段,可以用ID或者Price; 61 listBox1.ValueMember = "ID"; 62 // listBox1.ValueMember = "Price"; 63 64 } 65 66 private void listBox1_SelectedIndexChanged(object sender, EventArgs e) 67 { 68 //GetSelectedInfo_Foreach(); 69 GetSelectedInfo_Linq(); 70 71 } 72 /// 获取选中的信息, foreach写法 73 /// 74 private void GetSelectedInfo_Foreach() 75 { 76 if (-1 == listBox1.SelectedIndex) 77 { 78 MessageBox.Show("当前未选中任何项"); 79 return; 80 } 81 82 // 获取当前所有选中项的索引 83 string index = ""; 84 foreach(int i in listBox1.SelectedIndices) 85 { 86 index += i.ToString()+" , "; 87 } 88 89 // 获取当前所有选中项的ID,Title,Price 90 string ids = ""; 91 string titles = ""; 92 string prices = ""; 93 foreach (Book book in listBox1.SelectedItems) 94 { 95 ids += book.ID + " , "; 96 titles += book.Title + " , "; 97 prices += book.Price + " , "; 98 } 99 label1.Text = "当前选中项的索引: " + index; //+ listBox1.SelectedIndex.ToString(); 100 label2.Text = "选中的图书ID分别为: " + ids; 101 label3.Text = "选中的图书名称分别为: " + titles; 102 label4.Text = "选中的图书价格分别为: " + prices; 103 } 104 105 /// GetSelectedInfo_Linq: 获取选中的信息, Linq写法 106 /// 107 private void GetSelectedInfo_Linq() 108 { 109 if ( -1 == listBox1.SelectedIndex ) 110 { 111 MessageBox.Show("当前未选中任何项"); 112 return; 113 } 114 115 string index = ""; 116 foreach (int i in listBox1.SelectedIndices) 117 { 118 index += i.ToString() + ", "; 119 } 120 // Linq写法 121 label1.Text = "当前选中项的索引: " + index; 122 label2.Text = "选中的图书ID分别为: "+ string.Join(", ", listBox1.SelectedItems.Cast<Book>().Select(book => book.ID).ToArray()); 123 label3.Text = "选中的图书名称分别为: " + string.Join(", ",listBox1.SelectedItems.Cast<Book>().Select(book => book.Title).ToArray()); 124 label4.Text = "选中的图书价格分别为: " + string.Join(", ", listBox1.SelectedItems.Cast<Book>().Select(book => book.Price).ToArray()); 125 } 126 127 } 128 }
标签:
原文地址:http://www.cnblogs.com/DuanLaoYe/p/5349973.html