一、学校信息的添加、修改、删除
首先,建一个学校School类和一个公共类Common静态类。
在Common中创建一个Dictionary集合,用于存储所有学校
public static Dictionary<int, School> dicSchool = new Dictionary<int, School>();
创建一个方法,用于获取新的编号:
public static int GetNum(List<int> lst)
{
if (lst.Count > 0)
{
return lst.Max() + 1;
}
return 1;
}
代码如下:
class School
{
private int _schNum;
/// <summary>
/// 学校编号
/// </summary>
public int SchNum
{
get { return _schNum; }
set { _schNum = value; }
}
private string _schName;
/// <summary>
/// 学校名称
/// </summary>
public string SchName
{
get { return _schName; }
set { _schName = value; }
}
private string _schAddress;
/// <summary>
/// 学校地址
/// </summary>
public string SchAddress
{
get { return _schAddress; }
set { _schAddress = value; }
}
}
static class Common
{
/// <summary>
/// 创建一个集合,用于存储所有学校
/// key:学校编号 value:学校类
/// </summary>
public static Dictionary<int, School> dicSchool = new Dictionary<int, School>();
/// <summary>
/// 获取一个新编号
/// </summary>
/// <param name="lst">已有编号</param>
/// <returns></returns>
public static int GetNum(List<int> lst)
{
if (lst.Count > 0)
{
return lst.Max() + 1;
}
return 1;
}
}
1、添加
将新创建的学校添加到集合中,并且绑定到DataGridView控件中进行显示
//1、获取控件上输入的学校名称和地址
string schoolNme = txtSchoolName.Text.Trim(); //学校名称
string schAddress = txtAddress.Text.Trim(); //学校地址
//2、为该学校取一个编号
//获取学校集合目前的编号集合
List<int> lstNums = Common.dicSchool.Keys.ToList();
//调用获取编号的方法,取得新编号
int schNo = Common.GetNum(lstNums);
//3、创建一个学校对象
School sch = new School();
sch.SchoolName = schoolNme;
sch.SchoolNum = schNo;
sch.Address = schAddress;
//4、把该学校对象添加到集合中
Common.dicSchool.Add(schNo, sch);
如何将集合添加到DataGridView控件中进行显示?
//创建BindingSource对象
BindingSource bind = new BindingSource();
//为该对象绑定数据源
bind.DataSource = Common.dicSchool.Values;
//为DataGridView控件绑定数据源
dataGridView1.DataSource = bind;
//更改表头的名字
dataGridView1.Columns[0].HeaderText = "学校编号";
dataGridView1.Columns[1].HeaderText = "学校名称";
dataGridView1.Columns[2].HeaderText = "学校地址";
Form1:
private void ToolStripSchool_Click(object sender, EventArgs e)
{
//显示学校信息界面
SchFrm sch = new SchFrm();
DialogResult reslt=sch.ShowDialog();
if (reslt == DialogResult.OK)
{
//为学校的ComboBox赋数据源
cmbSchool.DataSource = Common.dicSchool.Values.ToList();
cmbSchool.DisplayMember = "Address";
}
}
Form2:
public partial class SchFrm : Form
{
public SchFrm()
{
InitializeComponent();
}
/// <summary>
/// 将新创建的学校添加到集合中,并且绑定到DataGridView控件中进行显示
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnAdd_Click(object sender, EventArgs e)
{
//1、获取控件上输入的学校名称和地址
string schoolNme = txtSchoolName.Text.Trim(); //学校名称
string schAddress = txtAddress.Text.Trim(); //学校地址
//2、为该学校取一个编号
//获取学校集合目前的编号集合
List<int> lstNums = Common.dicSchool.Keys.ToList();
//调用获取编号的方法,取得新编号
int schNo = Common.GetNum(lstNums);
//3、创建一个学校对象
School sch = new School();
sch.SchoolName = schoolNme;
sch.SchoolNum = schNo;
sch.Address = schAddress;
//4、把该学校对象添加到集合中
Common.dicSchool.Add(schNo, sch);
//5、将集合添加到DataGridView控件中进行显示
//创建BindingSource对象
BindingSource bind = new BindingSource();
//为该对象绑定数据源
bind.DataSource = Common.dicSchool.Values;
//为DataGridView控件绑定数据源
dataGridView1.DataSource = bind;
//更改表头的名字
dataGridView1.Columns[0].HeaderText = "学校编号";
dataGridView1.Columns[1].HeaderText = "学校名称";
dataGridView1.Columns[2].HeaderText = "学校地址";
}
/// <summary>
/// 修改学校
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnModify_Click(object sender, EventArgs e)
{
if (txtNum.Text == "")
{
MessageBox.Show("请选中要修改的行!");
return;
}
//从控件上获取修改以后的值。要注意的是,学校编号是不允许修改的
string strName = txtSchoolName.Text.Trim(); //学校名称
string strAddr = txtAddress.Text.Trim(); //学校地址
//根据学校编号找到该条学校信息,将新值更新回集合,
int num = Convert.ToInt32(txtNum.Text);
//创建一个修改后的学校对象
School schNew = new School();
schNew.SchoolName = strName;
schNew.Address = strAddr;
schNew.SchoolNum = num;
//用新的School对象更新集合中该编号对应的学校对象
Common.dicSchool[num] = schNew;
//重新绑定数据源
BindDataSource();
}
/// <summary>
/// 绑定数据源
/// </summary>
private void BindDataSource()
{
//创建BindingSource对象
BindingSource bind = new BindingSource();
//为该对象绑定数据源
bind.DataSource = Common.dicSchool.Values;
//为DataGridView控件绑定数据源
dataGridView1.DataSource = bind;
//更改表头的名字
dataGridView1.Columns[0].HeaderText = "学校编号";
dataGridView1.Columns[1].HeaderText = "学校名称";
dataGridView1.Columns[2].HeaderText = "学校地址";
}
private void dataGridView1_MouseDoubleClick(object sender, MouseEventArgs e)
{
}
/// <summary>
/// DataGridView单元格点击事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
//当前选中行的索引
int index = e.RowIndex;
if (index < 0) //没有选取任何行
{
return;
}
//根据索引得到该行的值(该行的学校信息)
//取到学校编号
string strId=dataGridView1.Rows[index].Cells["SchoolNum"].Value.ToString();
txtNum.Text = strId; //将学校编号回显到控件上
//取学校名称
string strName = dataGridView1.Rows[index].Cells[1].Value.ToString();
txtSchoolName.Text = strName;
//取学校地址
string strAddress = dataGridView1.Rows[index].Cells[2].Value.ToString();
txtAddress.Text = strAddress;
}
/// <summary>
/// 删除
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnDel_Click(object sender, EventArgs e)
{
//判断学校编号有没有
if (txtNum.Text == "")
{
MessageBox.Show("请选中一条记录进行删除!");
return;
}
//取得要删除的编号
int num = Convert.ToInt32(txtNum.Text);
DialogResult result=MessageBox.Show("你确定要删除该条记录吗?","确认信息",MessageBoxButtons.OKCancel,MessageBoxIcon.Warning);
if(result==DialogResult.OK)
{
//从集合中删除该编号对应的记录
Common.dicSchool.Remove(num);
//重新绑定数据源
BindDataSource();
txtNum.Text = "";
txtSchoolName.Text = "";
txtAddress.Text = "";
}
}
/// <summary>
/// 确定按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnOK_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.OK;
this.Close();
}
private void btnCancel_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.Cancel;
this.Close();
}
}