主窗体作为与用户交流的载体,已经初步设计完成,当我们按下某一个功能按钮时,能够得到一个相应功能的窗体,我们暂且称这些窗体为子窗体。
设计了10个子窗体来实现相应的功能,将这10个子窗体放置到PerForm文件夹下,10个窗体的名字分别为:F_AddressList,F_ClearData,F_Find,F_HaveBack,F_ManFile,F_Stat,F_User,F_UserAdd,F_UserPope,F_WordPad。分别实现地址查询,数据清除,人事查询,数据库恢复,认识浏览,人事资料统计,用户资料,添加用户,用户权限设置和记事本功能。
这一节,首先设计F_AddressList,设计按照查询条件和查询类型的条件来进行查询,找到所想要的数据。其中会用到SQL查询的相关知识,若能补充相关知识,则对于理解会有很大的帮助。
设计界面如下:
窗体中使用Grid'View控件来显示查询到的数据,查询类型使用一个ComBox控件来提供用户选择查询类型,利用TextBox控件来接收查询条件,同时设计了四个Button按钮,实现,添加,修改,删除,退出功能。
当设计好界面之后,开始实现各个功能:
1. 定义两个实例化的对象,MyClass和MyModule
[csharp] view plain copy
DataClass.MyMeans MyDataClass = new DataClass.MyMeans(); ModuleClass.MyModule MyMC = new ModuleClass.MyModule();声明一个DataSet“数据容器”,用来通过SqlDataReader类查询结果
[csharp] view plain copypublic static DataSet MyDS_Grid;//查询得到tb_AddressBook表中所有项,实现对信息的添加等操作
[csharp] view plain copypublic static string AllSql = "Select ID,Name as 姓名, Sex as 性别 , Phone as电话,WordPhone as 工作电话,Handset as 手机, QQ as QQ号,E_Mail as 邮箱地址 from tb_AddressBook";//Find_Field-->存放查询字段,对应于TextBox控件
[csharp] view plain copypublic static string Find_Field = ""; 2.当窗体生成时需要调用窗体的LOAD事件,完成相应的工作,其需要调用一个showAll()方法,此方法的调用及设计如下:[csharp] view plain copypublic void ShowAll() { ModuleClass.MyModule.Address_ID = ""; //用dataGridView控件显式职工姓名 MyDS_Grid = MyDataClass.GetDataSet(AllSql, "tb_AddressBook"); //设置控件的数据来源,datasoursce dataGridView1.DataSource = MyDS_Grid.Tables[0]; //设置第一列不可见 dataGridView1.Columns[0].Visible = false; //根据查询结果实现对Button控制其是否可以使用 if (dataGridView1.RowCount > 1) { Address_Amend.Enabled = true; Address_Delete.Enabled = false; } else { Address_Amend.Enabled = false; Address_Delete.Enabled = false; } }load事件中调用showAll()方法:
[csharp] view plain copyPRivate void F_AddressList_Load(object sender, EventArgs e) { ShowAll(); }3.当点击查询按钮时,则需要进行查询操作,通过实现Button的Click事件来完成功能的实现:
[csharp] view plain copyprivate void button5_Click(object sender, EventArgs e) { //判断查询条件是否为空 if (textBox1.Text == "") { MessageBox.Show("请输入查询条件。"); return; } ModuleClass.MyModule.Address_ID = ""; //使用datagridview来显示职工的名称 MyDS_Grid = MyDataClass.GetDataSet(AllSql + " where " + Find_Field + " like '%" + textBox1.Text.Trim() + "%'", "tb_AddressBook"); dataGridView1.DataSource = MyDS_Grid.Tables[0]; dataGridView1.Columns[0].Visible = false; //当查询结果存在 if (dataGridView1.RowCount > 1) { Address_Amend.Enabled = true; Address_Delete.Enabled = true; } else { Address_Amend.Enabled = false; Address_Delete.Enabled = false; } }4.而ComBox控件中所设计的查询条件选择实现代码如下:
[csharp] view plain copyprivate void comboBox1_TextChanged(object sender, EventArgs e) { //设置查询类型条件的ComBox控件来实现按照条件来进行查询 switch (((ComboBox)sender).SelectedIndex) { case 0: { Find_Field = "Name"; break; } case 1: { Find_Field = "Sex"; break; } case 2: { Find_Field = "E_Mail"; break; } } }5.当点击全部按钮时,其Click事件相应的代码为:
[csharp] view plain copyprivate void button1_Click(object sender, EventArgs e) { ShowAll(); }6.当我们需要向这个表中添加数据时,则需要点击“添加按钮”,这是触发的Click事件相应的代码为:
[csharp] view plain copyprivate void Address_Add_Click(object sender, EventArgs e) { //此时需要调用另一个窗体,这个窗体将在后面的文章中详解其实现过程。 InfoAddForm.F_Address FrmAddress = new InfoAddForm.F_Address(); FrmAddress.Text = "通讯录添加操作"; FrmAddress.Tag = 1; FrmAddress.ShowDialog(this); ShowAll(); }7.当点击修改按钮时,则实现对已有的数据进行修改,其也是通过点击按钮,触发此按钮的Click事件来实现功能:
[csharp] view plain copyprivate void Address_Amend_Click(object sender, EventArgs e) { //调用F_Address窗体修改通讯录信息,同一个窗体,不同的使用方式 InfoAddForm.F_Address FrmAddress = new InfoAddForm.F_Address(); FrmAddress.Text = "通讯录修改操作"; FrmAddress.Tag = 2; FrmAddress.ShowDialog(this); ShowAll(); }8.当点击删除按钮时,则实现了对已有数据进行删除的操作,其Click事件实现代码如下:
[csharp] view plain copyprivate void Address_Delete_Click(object sender, EventArgs e) { if (MessageBox.Show("确定要删除该条信息吗?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK) { MyDataClass.GetA_M_D_command("Delete tb_AddressBook where ID='" + ModuleClass.MyModule.Address_ID + "'"); ShowAll(); } }点击退出时,则需要补充一句 this.Clsoe();就可以了。
9.然而,真正显示给我们查询结果的是GridView控件,在这里实现了其cell enter事件:
[csharp] view plain copyprivate void dataGridView1_CellEnter(object sender, DataGridViewCellEventArgs e) { if (dataGridView1.RowCount > 1) { ModuleClass.MyModule.Address_ID = dataGridView1[0, dataGridView1.CurrentCell.RowIndex].Value.ToString(); Address_Amend.Enabled = true; Address_Delete.Enabled = true; } else { Address_Amend.Enabled = false; Address_Delete.Enabled = false; } }到此,窗体的设计基本完成,下节将设计F_ClearData窗体。
新闻热点
疑难解答