按照(七)中的介绍我们需要此章节需要设计职工简历这一选项卡,然而选项卡之间的切换需要转换不同的功能,所以在这里首先设计选项卡的切换的Click事件:
private void tabControl1_Click(object sender, EventArgs e) { groupBox5.Enabled = true; Sut_Delete.Enabled = true; MyMC.Ena_Button(Sut_Add, Sut_Amend, Sut_Cancel, Sut_Save, 1, 1, 0, 0); if (tabControl1.SelectedTab.Name == "tabPage1") //如果选择的是“职工基本信息”选项卡 { hold_n = 0; //恢复原始标识 MyMC.Ena_Button(Sut_Add, Sut_Amend, Sut_Cancel, Sut_Save, 1, 1, 0, 0); // groupBox5.Text = ""; Ima_n = 0;//标识是否选择了职工照片 Img_Clear.Enabled = false; //使按钮为不可用状态 Img_Save.Enabled = false; Sub_Table.Enabled = true; } //如果选择的是“工作简历”、“家庭关系”、“培训记录”和“奖惩记录”选项卡 if (tabControl1.SelectedTab.Name == "tabPage2" | tabControl1.SelectedTab.Name == "tabPage3" | tabControl1.SelectedTab.Name == "tabPage4" | tab Control1.SelectedTab.Name == "tabPage5") { groupBox5.Enabled = false; //使窗体中的操作按钮为不可用状态 Sub_Table.Enabled = false; if (tabControl1.SelectedTab.Name == "tabPage2") //“工作简历”选项卡 { groupBox6.Parent = (TabPage)tabPage2; MyMC.MaskTextBox_Format(Word_2); //指定MaskedTextBox控件的格式 MyMC.MaskTextBox_Format(Word_3); } if (tabControl1.SelectedTab.Name == "tabPage3") //“家庭关系”选项卡 { groupBox6.Parent = (TabPage)tabPage3; MyMC.MaskTextBox_Format(Famity_4); } if (tabControl1.SelectedTab.Name == "tabPage4") //“培训记录”选项卡 { groupBox6.Parent = (TabPage)tabPage4; MyMC.MaskTextBox_Format(TrainNote_3); MyMC.MaskTextBox_Format(TrainNote_4); } if (tabControl1.SelectedTab.Name == "tabPage5") //“奖惩记录”选项卡 { groupBox6.Parent = (TabPage)tabPage5; MyMC.MaskTextBox_Format(RANDP_3); MyMC.MaskTextBox_Format(RANDP_5); MyMC.CoPassData(RANDP_2, "tb_RPKind"); //向“奖惩类别”列表框中添加信息 } MyMC.Ena_Button(Part_Add, Part_Amend, Part_Cancel, Part_Save, 1, 1, 0, 0); } if (tabControl1.SelectedTab.Name == "tabPage6") //“个人简历”选项卡 { MyMC.Ena_Button(Sut_Add, Sut_Amend, Sut_Cancel, Sut_Delete, 0, 0, 0, 0); //使窗体中的操作按钮为不可用 Sut_Save.Enabled = true; //将窗体中的“保存”按钮设为可用状态 } }当点击职工简历这个选项卡时就会选择这个界面,其界面的最下面的按钮栏没有改变,故不在叙述其事件的实现过程。此界面的设计如下:
简历信息GroupBox框中包含了职工的简单的信息,同时,下面的数据表显示得到的结果,其中,还有对记录的添加,修改,删除等操作。
当填写完数据并点击添加后会在下面的数据框中显示,故设计其Cell_Enter事件:
private void dataGridView2_CellEnter(object sender, DataGridViewCellEventArgs e) { MyMC.Show_DGrid(dataGridView2, groupBox7.Controls, "Word_"); }注:show_DGrid方法见MyMoudle类中方法的实现。
当文本框添加完毕,点击添加时,会触发事件的响应程序如下:
private void button2_Click(object sender, EventArgs e)
{
hold_n = 1;
if (tabControl1.SelectedTab.Name == "tabPage2")
{
MyMC.Clear_Control(this.groupBox7.Controls);
Part_ID = MyMC.GetAutoCoding("tb_WordResume", "ID"); //自动添加编号;(此方法见MyModule类)
}
if (tabControl1.SelectedTab.Name == "tabPage3")
{
MyMC.Clear_Control(this.groupBox10.Controls);
Part_ID = MyMC.GetAutoCoding("tb_Family", "ID"); //自动添加编号;
}
if (tabControl1.SelectedTab.Name == "tabPage4")
{
MyMC.Clear_Control(this.groupBox12.Controls);
Part_ID = MyMC.GetAutoCoding("tb_TrainNote", "ID"); //自动添加编号;
}
if (tabControl1.SelectedTab.Name == "tabPage5")
{
MyMC.Clear_Control(this.groupBox14.Controls);
Part_ID = MyMC.GetAutoCoding("tb_RANDP", "ID"); //自动添加编号;
}
MyMC.Ena_Button(Part_Add, Part_Amend, Part_Cancel, Part_Save, 1, 0, 1, 1);(此方法见MyModule类)
}
当点击修改时,实现此事件的代码如下:
private void Part_Amend_Click(object sender, EventArgs e) { hold_n = 2; MyMC.Ena_Button(Part_Add, Part_Amend, Part_Cancel, Part_Save, 0, 1, 1, 1); }当点击删除时,事件的响应代码如下:
private void Part_Delete_Click(object sender, EventArgs e) { string Delete_Table = ""; string Delete_ID = ""; if (tabControl1.SelectedTab.Name == "tabPage2") { if (dataGridView2.RowCount < 2) { MessageBox.Show("数据表为空,不可以删除。"); return; } MyMC.Clear_Control(this.groupBox7.Controls); Delete_ID = dataGridView2[1, dataGridView2.CurrentCell.RowIndex].Value.ToString(); Delete_Table = "tb_WordResume"; } if (tabControl1.SelectedTab.Name == "tabPage3") { if (dataGridView3.RowCount < 2) { MessageBox.Show("数据表为空,不可以删除。"); return; } MyMC.Clear_Control(this.groupBox10.Controls); Delete_ID = dataGridView3[1, dataGridView3.CurrentCell.RowIndex].Value.ToString(); Delete_Table = "tb_Family"; } if (tabControl1.SelectedTab.Name == "tabPage4") { if (dataGridView4.RowCount < 2) { MessageBox.Show("数据表为空,不可以删除。"); return; } MyMC.Clear_Control(this.groupBox12.Controls); Delete_ID = dataGridView4[1, dataGridView4.CurrentCell.RowIndex].Value.ToString(); Delete_Table = "tb_TrainNote"; } if (tabControl1.SelectedTab.Name == "tabPage5") { if (dataGridView5.RowCount < 2) { MessageBox.Show("数据表为空,不可以删除。"); return; } MyMC.Clear_Control(this.groupBox14.Controls); Delete_ID = dataGridView5[1, dataGridView5.CurrentCell.RowIndex].Value.ToString(); Delete_Table = "tb_RANDP"; } if ((Delete_ID.Trim()).Length > 0) { MyDataClass.GetA_M_D_command("Delete " + Delete_Table + " where ID='" + Delete_ID + "'"); Part_Cancel_Click(sender, e); } }
当点击取消按钮时,其事件的响应代码如下:
private void Part_Cancel_Click(object sender, EventArgs e) { if (tabControl1.SelectedTab.Name == "tabPage2") { DataSet WDset = MyDataClass.GetDataSet("select Sut_ID,ID,BeginDate as 开始时间,EndDate as 结束时间, Branch as 部门, Business as 职务, Word Unit as 工作单位 from tb_WordResume where Sut_ID='" + tem_ID + "'", "tb_WordResume"); MyMC.Correlation_Table(WDset, dataGridView2); } if (tabControl1.SelectedTab.Name == "tabPage3") { DataSet FDset = MyDataClass.GetDataSet("select Sut_ID,ID,LeaguerName as 家庭成员名称,Nexus as 与本人的关系, BirthDate as 出生日期, WordUni t as 工作单位, Business as 职务, Visage as 政治面貌, Phone as 电话 from tb_Family where Sut_ID='" + tem_ID + "'", "tb_Family"); MyMC.Correlation_Table(FDset, dataGridView3); } if (tabControl1.SelectedTab.Name == "tabPage4") { DataSet TDset = MyDataClass.GetDataSet("select Sut_ID,ID,TrainFashion as 培训方式,BeginDate as 培训开始时间, EndDate as 培训结束时间, Spec iality as 培训专业, TrainUnit as 培训单位, KulturMemo as 培训内容, Charge as 费用, Effect as 效果 from tb_TrainNote where Sut_ID='" + tem_ ID + "'", "tb_TrainNote"); MyMC.Correlation_Table(TDset, dataGridView4); } if (tabControl1.SelectedTab.Name == "tabPage5") { DataSet RDset = MyDataClass.GetDataSet("select Sut_ID,ID,RPKind as 奖惩种类,RPDate as 奖惩时间, SealMan as 批准人, QuashDate as 撤消时间, QuashWhys as 撤消原因 from tb_RANDP where Sut_ID='" + tem_ID + "'", "tb_RANDP"); MyMC.Correlation_Table(RDset, dataGridView5); } hold_n = 0; //恢复原始标识 MyMC.Ena_Button(Part_Add, Part_Amend, Part_Cancel, Part_Save, 1, 1, 0, 0); }当点击保存时,实现的代码如下:
private void Part_Save_Click(object sender, EventArgs e) { string s = ""; if (tabControl1.SelectedTab.Name == "tabPage2") { s = "ID,Sut_ID,BeginDate,EndDate,Branch,Business,WordUnit"; //"select Sut_ID,ID,BeginDate as 开始时间,EndDate as 结束时间, Branch as 部门, Business as 职务, WordUnit as 工作单位 from tb_WordResume ModuleClass.MyModule.ADDs = ""; if (hold_n == 2) { if (dataGridView2.RowCount < 2) { MessageBox.Show("数据表为空,不可以修改"); } else Part_ID = dataGridView2[1, dataGridView2.CurrentCell.RowIndex].Value.ToString(); } MyMC.Part_SaveClass(s, tem_ID, Part_ID, this.groupBox7.Controls, "Word_", "tb_WordResume", 7, hold_n); } if (tabControl1.SelectedTab.Name == "tabPage3") { s = "ID,Sut_ID,LeaguerName,Nexus,BirthDate,WordUnit,Business,Visage,Phone"; ModuleClass.MyModule.ADDs = ""; if (hold_n == 2) { if (dataGridView3.RowCount < 2) { MessageBox.Show("数据表为空,不可以修改"); } else Part_ID = dataGridView3[1, dataGridView3.CurrentCell.RowIndex].Value.ToString(); } MyMC.Part_SaveClass(s, tem_ID, Part_ID, this.groupBox10.Controls, "Famity_", "tb_Family", 9, hold_n); } if (tabControl1.SelectedTab.Name == "tabPage4") { s = "ID,Sut_ID,TrainFashion,BeginDate,EndDate,Speciality,TrainUnit,KulturMemo,Charge,Effect"; ModuleClass.MyModule.ADDs = ""; if (hold_n == 2) { if (dataGridView4.RowCount < 2) { MessageBox.Show("数据表为空,不可以修改"); } else Part_ID = dataGridView4[1, dataGridView4.CurrentCell.RowIndex].Value.ToString(); } MyMC.Part_SaveClass(s, tem_ID, Part_ID, this.groupBox12.Controls, "TrainNote_", "tb_TrainNote", 10, hold_n); } if (tabControl1.SelectedTab.Name == "tabPage5") { s = "ID,Sut_ID,RPKind,RPDate,SealMan,QuashDate,QuashWhys"; ModuleClass.MyModule.ADDs = ""; if (hold_n == 2) { if (dataGridView5.RowCount < 2) { MessageBox.Show("数据表为空,不可以修改"); } else Part_ID = dataGridView5[1, dataGridView5.CurrentCell.RowIndex].Value.ToString(); } MyMC.Part_SaveClass(s, tem_ID, Part_ID, this.groupBox14.Controls, "RANDP_", "tb_RANDP", 7, hold_n); } if (ModuleClass.MyModule.ADDs != "") MyDataClass.GetA_M_D_command(ModuleClass.MyModule.ADDs); Part_Cancel_Click(sender, e); }
补充上一节中的某些方法:
首先对于时间输入的格式的问题,我们需要设计接收窗口的KeyPress事件来实现对窗口中实现输入指定的内容,从而拒绝非法输入,保证系统的安全性问题。
事件实现如下:
private void S_Pact_B_Leave(object sender, EventArgs e) { MyMC.Estimate_Date((MaskedTextBox)sender); } private void S_Pact_B_KeyPress(object sender, KeyPressEventArgs e) { MyMC.Estimate_Key(e, "", 0); } private void S_Pact_E_KeyPress(object sender, KeyPressEventArgs e) { MyMC.Estimate_Key(e, "", 0); }
其 中Estimate_Key方法和Estimate_Date方法已经在MyModule类中进行了实现,前者控制输入,后者控制日期的检查等,所以在这里不再去详细介绍此方法的实现过程。其分别控制毕业时间,以及输入格式的控制,以及输入内容的控制。
private void S_GraduateDate_KeyPress(object sender, KeyPressEventArgs e) { MyMC.Estimate_Key(e, "", 0); } private void S_GraduateDate_Leave(object sender, EventArgs e) { MyMC.Estimate_Date((MaskedTextBox)sender); } private void S_Workdate_Leave(object sender, EventArgs e) { MyMC.Estimate_Date((MaskedTextBox)sender); } private void S_Workdate_KeyPress(object sender, KeyPressEventArgs e) { MyMC.Estimate_Key(e, "", 0); } private void S_M_Pay_KeyPress(object sender, KeyPressEventArgs e) { MyMC.Estimate_Key(e, ((TextBox)sender).Text, 1); } private void S_Pact_Y_KeyPress(object sender, KeyPressEventArgs e) { MyMC.Estimate_Key(e, "", 0); } private void S_Age_KeyPress(object sender, KeyPressEventArgs e) { MyMC.Estimate_Key(e, "", 0); } private void S_WorkLength_KeyPress(object sender, KeyPressEventArgs e) { MyMC.Estimate_Key(e, "", 0); }
至此,职工简历部分的设计已经基本完成,接下来设计家庭关系这一选项卡。