using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Books;
namespace formMain
{
public partial class Form1 : Form
{
//创建一个容器
private List<Book> bookList = new List<Book>();
public Form1()
{
InitializeComponent();
this.dgvBookList.AutoGenerateColumns = false;//不会自动再生成列
}
private void ShowBooks()
{//对象初始化器
Book ojbBook1 = new Book()
{
BarCode = 10001,
BookName="C#编程",
Author ="小白",
UnitPrice =100,
PublishDate =Convert.ToDateTime("2018-08-28")
};
Book ojbBook2 = new Book()
{
BarCode = 10002,
BookName = "C#编程",
Author = "小白",
UnitPrice = 100,
PublishDate = Convert.ToDateTime("2018-08-28")
};
Book ojbBook3 = new Book()
{
BarCode = 10003,
BookName = "C#编程",
Author = "小白",
UnitPrice = 100,
PublishDate = Convert.ToDateTime("2018-08-28")
};
Book ojbBook4 = new Book()
{
BarCode = 10004,
BookName = "C#编程",
Author = "小白",
UnitPrice = 100,
PublishDate = Convert.ToDateTime("2018-08-28")
};
Book ojbBook5 = new Book()
{
BarCode = 10005,
BookName = "C#编程",
Author = "小白",
UnitPrice = 100,
PublishDate = Convert.ToDateTime("2018-08-28")
};
bookList.Add(ojbBook1);
bookList.Add(ojbBook2);
bookList.Add(ojbBook3);
bookList.Add(ojbBook4);
bookList.Add(ojbBook5);
//设置数据源
this.dgvBookList.DataSource = this.bookList;
//DataTable dt = new DataTable();
//dt.Columns.Add(new DataColumn("0", typeof(string)));
//dt.Columns.Add(new DataColumn("1", typeof(string)));
//dt.Columns.Add(new DataColumn("2", typeof(string)));
//dt.Columns.Add(new DataColumn("3", typeof(string)));
//for (int j = 0; j < bookList.Count; j++)
//{
// Book nowb = new Book();
// nowb = (Book)bookList[j];
// DataRow dr=dt.NewRow();
// dr["0"] = nowb.BookName;
// dr["1"] = nowb.Author;
// dr["2"] = nowb.UnitPrice;
// dr["3"] = nowb.PublishDate;
// dt.Rows.Add(dr);
//}
//this.dgvBookList.DataSource = dt;
}
private void dgvBookList_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
}
//显示图书列表
private void btnShowBook_Click(object sender, EventArgs e)
{
ShowBooks();
}
//添加集合元素
private void btnAdd_Click(object sender, EventArgs e)
{
Book ojbBook6 = new Book()
{
BarCode = 10006,
BookName = "C#编程",
Author = "小白",
UnitPrice = 100,
PublishDate = Convert.ToDateTime("2018-08-28")
};
this.bookList.Add(ojbBook6);
//重新绑定数据源
this.dgvBookList.DataSource= null;
this.dgvBookList.DataSource = this.bookList;
}
//插入集合元素
private void btnInSert_Click(object sender, EventArgs e)
{
Book ojbBook7 = new Book()
{
BarCode = 10007,
BookName = "C#编程",
Author = "小白",
UnitPrice = 100,
PublishDate = Convert.ToDateTime("2018-08-28")
};
this.bookList.Insert (3,ojbBook7);
//重新绑定数据源
this.dgvBookList.DataSource = null;
this.dgvBookList.DataSource = this.bookList;
}
//删除选中对象
private void btnDelSeleted_Click(object sender, EventArgs e)
{
//找到要删除的图书编码
string barCode = this.dgvBookList.CurrentRow.Cells["BarCode"].Value.ToString();//转换类型
//根据编码在集合中查询
Book deletBook = null;//定义一个deletBook
//for (int i=0;i <this.bookList .Count;i++)
//{
// if (bookList[i].BarCode.ToString() == barCode)
// {
// deletBook = bookList[i];
// break;
// }
//}
//使用Linq查询
deletBook = (from b in bookList where b.BarCode.ToString().Equals(barCode) select b).First<Book>();
bookList.Remove(deletBook);
//重新绑定数据源
this.dgvBookList.DataSource = null;
this.dgvBookList.DataSource = this.bookList;
}
}
}
首先要创建一个窗体,可以“文件-新建-项目”,选择“Windows窗体应用程序”,或者右击“解决方案-添加”,选择“Windows窗体应用程序”。
按要求添加好按扭(在左边的工具箱)
因为在后面对象初始化的时候用Books类里的方法(可以手动重新写再添加到类里面),可以直接之前写好的类添加到所需的项目里面。如图,可以直接点击鼠标拖下来
然后在Form1.cs里的最上面Using,添加“Using Books”,添加完之后就可以引用Books里面的方法了。
在Form1.cs里创建一个容器,可以说是数据载体,然后初始化数据,
然后把数据添加到容器里面,再把容器送到dgvBookList.DataSource(窗体程序的列表)
然后在“显示图列表”按扭中输出
关于添加、插入、删除元素的时候,有一点需要注意的:就是添加或者插入或者删除元素之后,要重新绑定数据源,也就是更新数据源。
到最后做出来的效果: