主窗體作為與用戶交流的載體,已經初步設計完成,當我們按下某一個功能按鈕時,能夠得到一個相應功能的窗體,我們暫且稱這些窗體為子窗體。
設計了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 = "";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窗體。
新聞熱點
疑難解答