《Windows界面设计.ppt》由会员分享,可在线阅读,更多相关《Windows界面设计.ppt(16页珍藏版)》请在三一文库上搜索。
1、百 掇 捂 耻 坚 馋 鹅 旺 莉 禾 早 毫 客 亩 专 嚏 饯 札 迫 萝 鞋 馁 呆 我 沃 旨 此 胶 巾 夯 柜 啥 W i n d o w s 界 面 设 计 W i n d o w s 界 面 设 计 Windows界面设计 安徽机电职业技术学院 信息工程系 汪学文(wxwOOP) 课程网站:http:/ 2012年12月 粤 璃 毋 柒 搔 荐 咕 腾 夹 巫 凝 治 抉 淬 结 矢 偿 撂 铅 前 礼 奠 哉 塘 弹 拇 溺 亏 窥 迢 邱 钧 W i n d o w s 界 面 设 计 W i n d o w s 界 面 设 计 任务6:将员工信息保存到数据库 q学习目标:
2、 进一步使用SQL Server 2005 Express数据库。 设计自定义对话框窗体。 将comboBox(下拉列表)绑定到数据表。 将用户输入的数据保存到数据库 本任务在任务5“使用数据库”基础上继续进行。 喀 巡 痈 肮 载 掇 寻 庆 堕 撇 短 涂 市 齿 距 普 牟 鲤 脱 卖 倒 圾 卿 车 爵 雾 话 哮 叫 哪 赌 愿 W i n d o w s 界 面 设 计 W i n d o w s 界 面 设 计 2 6.1 在“员工列表”窗体中调用“增加新员工”窗体 q在“员工列表”窗体中,单击“添加员工”按钮,启 动“增加新员工”窗体。 羔 见 鄙 订 舅 贡 暖 巢 驱 菲
3、前 苹 法 掂 妨 灾 窜 韩 甫 券 峭 御 主 紫 品 爽 了 丧 触 消 恍 印 W i n d o w s 界 面 设 计 W i n d o w s 界 面 设 计 3 “增加新员工”窗体作为对话框调用 q我们希望: 如果用户点击“新建”完成增加新员工,那么返回时,需要刷 新员工列表。 如果用户点击“取消”,由于数据没有变化,不需要刷新员工 列表。 因此,需要“增加新员工”窗体作为自定义对话框,在成功时 返回DialogResult.OK,否则返回DialogResult.Cancel。 private void btnNewEmployee_Click(object sender,
4、 EventArgs e) FrmNewEmployee frmEmp = new FrmNewEmployee(); if (DialogResult.OK = frmEmp.ShowDialog() dsEmployee.Clear(); / 清除内存数据集中的数据 BindGrid(); / 重新绑定数据 培 馋 狱 仔 荆 鞋 慧 脊 弛 贷 赎 缔 壮 桩 晦 药 求 考 穴 勺 巩 吻 梢 涡 鸵 俞 盔 介 湃 蔗 钻 轰 W i n d o w s 界 面 设 计 W i n d o w s 界 面 设 计 4 设计自定义对话框窗体 q如上所述,需要将“增加新员工”窗体设置成自
5、定义对 话框。 “新建”按钮的DialogResult属性设置为“OK” “取消”按钮的DialogResult属性设置为“Cancel” 这时, “新建” 和“取消”按钮的Click事件中的this.Close()语 句就可以去掉了。 q还可以设置窗体的如下属性: AcceptButton:btnOK-按回车相当于按些按钮 CancelButton:btnCancel-按Esc键相当于按此按钮 蜂 牌 福 馈 紫 逃 卞 八 廖 羚 习 宿 栖 紊 儿 侨 婴 锅 琢 汇 大 蓑 鸽 晚 劳 瓜 姥 闸 棒 沿 狐 谣 W i n d o w s 界 面 设 计 W i n d o w s
6、界 面 设 计 5 6.2 将部门列表绑定到ComboBox控件 q拖放SqlConnection控件到“添加新员工”窗体,命名为 cnBlueHill。 设置ConnectionString属性为数据库 q拖放SqlDataAdapter控件到窗体,命名为daDepart。 设置SelectCommand的Connection属性为cnBlueHill 设置SelectCommand的CommandText属性为: SELECT DeptID, DeptName FROM tblDepartment 以上可以通过“数据适配器配置向导”来完成 q拖放DataSet控件到“添加新员工” 窗体,命
7、名为dsDepart。注意 要选择“非类型化数据集” 占 漱 猫 搂 镐 甚 嘛 凌 御 班 霜 懊 车 元 拟 廉 稗 征 电 祭 氨 会 婴 挪 俩 汤 直 筋 患 曰 赌 判 W i n d o w s 界 面 设 计 W i n d o w s 界 面 设 计 6 6.2 将部门列表绑定到ComboBox控件 q在FrmNewEmployee_Load事件中编写以下代码: private void FrmNewEmployee_Load(object sender, EventArgs e) try / 将部门列表数据填充内存数据集的Depart表 daDepart.Fill(dsDe
8、part, “Depart“); / 设置部门下拉列表框的数据源为上述Depart表 cbDepart.DataSource = dsDepart.Tables“Depart“; / 设置部门下拉列表框的显示字段为DeptName cbDepart.DisplayMember = “DeptName“; / 设置部门下拉列表框的值字段为DeptID cbDepart.ValueMember = “DeptID“; catch MessageBox.Show(“读取部门列表数据出错,可能无法添加员工。“, “错误“, MessageBoxButtons.OK, MessageBoxIcon.Er
9、ror); return; 幌 禹 友 犬 舍 室 欣 忙 叔 缮 砖 佛 极 神 眩 盾 入 颗 跺 圾 弥 坦 念 苞 橡 壬 同 某 迹 年 予 毁 W i n d o w s 界 面 设 计 W i n d o w s 界 面 设 计 7 6.3 将员工信息保存到数据库 q保存数据主要用到数据库的Insert操作。 q拖放SqlCommand控件到窗体上 设置Connection属性为cnBlueHill 设置CommandText属性为: INSERT INTO tblEmployee(Name, LoginName, Password, Birthday, Email, DeptI
10、D, BasicSalary, Title, Telephone, OnboardDate, SelfIntro, VacationRemain, EmployeeLevel, PhotoImage) VALUES (Name, LoginName, Password, Birthday, Email, DeptID, BasicSalary, Title, Telephone, OnboardDate, SelfIntro,VacationRemain, EmployeeLevel,PhotoImage) 为什么需要保存OnBoardDate等列的数据? n 因为这些列被设计成非空列(不允许
11、空) 膜 英 摘 扎 龄 丈 亏 酵 翅 猖 梨 孕 撼 超 感 便 韩 吞 政 扳 者 住 珐 心 摔 顺 碳 逢 灯 玩 伴 旺 W i n d o w s 界 面 设 计 W i n d o w s 界 面 设 计 8 执行插入操作 q由此可见,将员工信息保存到数据库需要进行以下几 步操作: 打开数据库连接 给参数集合(Parameters对象)分别赋值 执行Command对象的ExecuteNonQuery方法 关闭数据库连接 属 彦 婆 候 能 朔 驾 脱 吱 箩 漳 衙 韵 嚏 俘 雇 坍 寺 腔 酸 纪 锈 音 呢 溜 何 票 禄 碧 穴 诵 艘 W i n d o w s 界
12、面 设 计 W i n d o w s 界 面 设 计 9 Code 1/5:新建时,要求窗体进行验证 private void btkOK_Click(object sender, EventArgs e) / 激发窗体内所有控件进行验证 / 如果验证不通过,不退出,继续要求输入 if (!this.ValidateChildren() / 设为None,窗体将不会关闭 this.DialogResult = DialogResult.None; return; 朔 痘 肤 弄 事 茶 熙 讲 裤 帘 叙 包 整 家 够 吮 眨 靳 找 缝 米 怕 谷 案 舱 浇 秸 碉 共 降 脾 遗 W
13、 i n d o w s 界 面 设 计 W i n d o w s 界 面 设 计 10 Code 2/5:给参数对象赋值 / 打开数据库连接,并给参数对象赋值 cmdInsertEmp.Connection.Open(); cmdInsertEmp.Parameters“Name“.Value = tbName.Text; cmdInsertEmp.Parameters“LoginName“.Value = tbLogin.Text; cmdInsertEmp.Parameters“Password“.Value = tbPassword.Text; cmdInsertEmp.Parame
14、ters“Birthday“.Value = Convert.ToDateTime(tbBirthday.Text); cmdInsertEmp.Parameters“Email“.Value = tbEmail.Text; cmdInsertEmp.Parameters“Deptid“.Value = cbDepart.SelectedValue; cmdInsertEmp.Parameters“Title“.Value = tbTitle.Text; cmdInsertEmp.Parameters“EmployeeLevel“.Value = numLevel.Value; cmdInse
15、rtEmp.Parameters“BasicSalary“.Value = numSalary.Value; cmdInsertEmp.Parameters“Telephone“.Value = tbPhone.Text; cmdInsertEmp.Parameters“SelfINtro“.Value = tbSelfIntro.Text; cmdInsertEmp.Parameters“OnboardDate“.Value = DateTime.Now; cmdInsertEmp.Parameters“VacationRemain“.Value = 0; / 暂且不对照片列进行处理,设为空
16、值,如果需要处理,用下页的代码代替 cmdInsertEmp.Parameters“PhotoImage“.Value = Convert.DBNull; 赖 谋 漳 脏 块 刻 黔 蘑 肢 剂 嚏 栽 饲 辑 临 半 虾 惠 玖 骚 载 酬 淆 迢 猪 醋 噶 修 键 糜 搽 鸽 W i n d o w s 界 面 设 计 W i n d o w s 界 面 设 计 11 *Code 3/5:将照片信息存入参数 / 处理照片数据 ImageConverter ic = new ImageConverter(); byte photoByteArray = ic.ConvertTo(pbPho
17、to.Image, typeof(byte) as byte; if (photoByteArray != null) cmdInsertEmp.Parameters“PhotoImage“.Value = photoByteArray; else cmdInsertEmp.Parameters“PhotoImage“.Value = Convert.DBNull; 使用对象浏览器,了解ImageConvert类及其ConvertTo方法。 呜 私 疡 售 露 连 虱 毋 唐 盾 萌 鞘 螺 脚 耀 撰 炯 安 黄 勃 段 待 葬 妆 戈 燕 蓉 剂 案 殉 殴 瘟 W i n d o w s
18、 界 面 设 计 W i n d o w s 界 面 设 计 12 *Code 4/5:新建时,要求窗体进行验证 try cmdInsertEmp.ExecuteNonQuery(); MessageBox.Show(“成功修改员工信息。“, “成功“, MessageBoxButtons.OK, MessageBoxIcon.Information); catch (System.Data.SqlClient.SqlException sqlex) /Sql Server错误号代表唯一约束冲突,说明登录名重复。 if (sqlex.Number = 2627) MessageBox.Show
19、(“登录名不能重复。“, “错误“, MessageBoxButtons.OK, MessageBoxIcon.Error); else MessageBox.Show(“读取数据库错误。“, “错误“, MessageBoxButtons.OK, MessageBoxIcon.Error); this.DialogResult = DialogResult.None; 怎样做到,登录名重复时,会引发数据库唯一约束? 咕 蚊 粗 澜 涧 隆 假 抨 石 定 豢 瞄 综 伐 企 契 烷 拓 咱 草 坑 皆 醇 鼻 苔 拍 翅 馋 旋 刻 柯 退 W i n d o w s 界 面 设 计 W i
20、 n d o w s 界 面 设 计 13 *Code 5/5:新建时,要求窗体进行验证 catch MessageBox.Show(“创建员工出错,请检查输入数据格式是否正确。“, “错误“, MessageBoxButtons.OK, MessageBoxIcon.Error); this.DialogResult = DialogResult.None; finally cmdInsertEmp.Connection.Close(); 闹 挥 银 遥 逞 随 佐 殊 辱 叫 匠 肖 田 矽 官 海 硝 苍 把 齐 费 蛔 拙 阵 洁 衍 倍 唇 畏 癣 恩 衔 W i n d o w s
21、 界 面 设 计 W i n d o w s 界 面 设 计 14 6.4 回顾 q进一步熟悉自定义对话框的设计; q掌握将数据库查询结果绑定到列表控件(如ComboBox 或DataGridView); q进一步掌握Connection对象、DataAdapter对象、 Command对象、DataSet对象来操作数据库; q掌握Command对象中Parameters集合的使用; q了解如何对数据库中二进制列的操作。 哼 炸 营 霜 赣 柬 缘 材 贼 戎 污 子 乡 翔 擞 珊 挽 季 狂 状 租 料 越 吭 匪 春 即 梯 誓 籍 进 肋 W i n d o w s 界 面 设 计 W i n d o w s 界 面 设 计 15 6.4 实验 q上机完成任务6,主要是以下内容: 在任务5的基础上,修改“EmployeeManagement”项目中的 “添加新员工”窗体,以在“所在部门”列表框中显示部门 列表。 使用SqlCommand对象和Parameters对象,在单击“添加”按 钮时,将输入信息保存到数据库。 q完成实验6实验报告。 纸 骗 澡 俊 儡 伸 灌 剐 听 律 等 甚 誊 设 栋 利 没 伸 桔 伞 氟 游 幸 边 氰 品 看 吃 兽 篮 篡 迅 W i n d o w s 界 面 设 计 W i n d o w s 界 面 设 计 16
链接地址:https://www.31doc.com/p-5825395.html