winform - ListBox

  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 }

posted @ 2016-04-03 15:50  C/C++/Python/Java  阅读(779)  评论(0编辑  收藏  举报