收藏 分享(赏)

第19讲 多窗格数据浏览窗体实例.ppt

上传人:HR专家 文档编号:8058622 上传时间:2019-06-07 格式:PPT 页数:19 大小:256.50KB
下载 相关 举报
第19讲 多窗格数据浏览窗体实例.ppt_第1页
第1页 / 共19页
第19讲 多窗格数据浏览窗体实例.ppt_第2页
第2页 / 共19页
第19讲 多窗格数据浏览窗体实例.ppt_第3页
第3页 / 共19页
第19讲 多窗格数据浏览窗体实例.ppt_第4页
第4页 / 共19页
第19讲 多窗格数据浏览窗体实例.ppt_第5页
第5页 / 共19页
点击查看更多>>
资源描述

1、1,李德奇 主编,第十九讲 多窗格数据浏览窗体实例,Windows 程序设计案例教程(C#),大连理工大学出版社,2,教学目标,掌握多窗格窗体的设计过程 掌握TreeView控件的使用 掌握对TreeView控件的节点控制方法 完成多窗格数据浏览窗体实例的程序编写,3,教学内容,一、多窗格数据浏览窗体的功能和用户界面 二、多窗格数据浏览窗体的设计步骤 三、多窗格数据浏览窗体的主要程序代码 四、TreeView控件,4,一、多窗格数据浏览窗体的功能和用户界面(1/2),多窗格数据浏览窗体实现对数据库XSGL中的学生信息表的学生信息进行快速定位浏览,用户在窗体的左窗格中选择一个学号,在窗体的右窗格

2、中将显示该生的详细信息。程序运行后的用户界面如下图。,5,一、多窗格数据浏览窗体的功能和用户界面(2/2),6,二、多窗格数据浏览窗体的设计步骤(1/2),创建Windows应用程序项目,项目名称为“多窗格数据浏览窗体实例”。 向窗体中加入一个ImageList控件,控件名为imageList1 。打开控件的属性窗口,单击Images属性后的按钮,弹出Image集合编辑器,向其中加入2幅图片,一幅为文件夹图片,另一幅为文件夹被打开的图片,这两幅图片是为接下来设计的TreeView控件的节点准备的。 向窗体中加入1个TreeView 控件,控件名为treeView1。打开它的属性窗口,在其中设置

3、其ImageList属性值为imageList1,指明其节点图片由该控件提供;设置其Dock属性值为Left,使起停靠在窗体的左边。该控件显示某职业技术学院学生管理部门的系-班级学号的层次结构。 向窗体中加入1个Splitter控件,控件名为splitter1。 设置其Dock属性值为Left,使将其紧贴在控件treeView1的右边。 向窗体的右部加入一个Panel控件,控件名为panel1。设置其Dock属性值为Fill,使充满窗体的右部。,7,二、多窗格数据浏览窗体的设计步骤(2/2),向panel1中加入一个Label控件,该控件的文本为“学生信息浏览”,说明其下方显示的是学生的信息。

4、 向panel1加入一个GroupBox控件,控件名为groupBox1,将显示学生信息的控件捆绑在一起。 向控件groupBox1中加入10个Label控件,控件名为 label2label11。这10个控件用来标明各数据项的名称。 向控件groupBox1中加入9个Label控件,控件名为 labelNumber、labelName等。这9个控件用来显示学生的文本类型数据。 向控件groupBox1中加入1个PictureBox控件,控件名为pictureBox1。这个控件用来显示学生的相片。,8,三、多窗格数据浏览窗体的主要程序代码(1/7),定义构造树型控件根节点的方法 private

5、 void StructRootNode() /查询系别信息myDataAdapter.SelectCommand.CommandText=“select * from 系别信息表“;DataSet departmentSet=new DataSet();int n=myDataAdapter.Fill(departmentSet,“系别信息表“);string nodeText;DataSet classSet=new DataSet ();/循环向控件treeView1加入根节点,这些节点就是“系”节点for(int i=0;in;i+)nodeText=departmentSet.Tab

6、les“系别信息表“.Rowsi“系名称“.ToString();TreeNode node=new TreeNode(nodeText,0,1);/增加节点标记,以便之后判断节点的类别node.Tag=“系节点“;/向控件treeView1中增加一个根节点treeView1.Nodes.Add(node);/查找该系下面的班级myDataAdapter.SelectCommand.CommandText=“select * from 班级信息表“+“ where 所属系=“+nodeText+“;classSet.Clear();myDataAdapter.Fill(classSet,“班级

7、信息表“);/若该系的班级数不为0if(classSet.Tables“班级信息表“.Rows.Count!=0)/在该根节点下加入一个空的子节点,以便之后能够展开该节点node.Nodes.Add(new TreeNode(“); ,9,三、多窗格数据浏览窗体的主要程序代码(2/7),树型控件节点展开(1/3) private void treeView1_BeforeExpand(object sender, System.Windows.Forms.TreeViewCancelEventArgs e) string nodeType=e.Node.Tag.ToString(); stri

8、ng nodeName=e.Node.Text;DataSet classSet=new DataSet();DataSet studentSet=new DataSet();int n;switch(nodeType)case “系节点“:myDataAdapter.SelectCommand.CommandText=“select 班级名称 from “+“班级信息表 where 所属系=“+nodeName+“;classSet.Clear();n=myDataAdapter.Fill(classSet,“班级信息表“);/清除要展开的节点下的所有节点,以便重新构造该节点的子节点e.No

9、de.Nodes.Clear();,10,三、多窗格数据浏览窗体的主要程序代码(3/7),树型控件节点展开(2/3)/循环添加子节点for(int i=0;in;i+)TreeNode node=new TreeNode(classSet.Tables“班级信息表“.Rowsi“班级名称“.ToString(),0,1);/增加节点标记,以便之后判断节点的类别node.Tag=“班级节点“;e.Node.Nodes.Add(node);/查找该班级下面的学生myDataAdapter.SelectCommand.CommandText=“select * from“+“ 学生信息表 where

10、 班级=“+node.Text+“;studentSet.Clear();myDataAdapter.Fill(studentSet,“学生信息表“);/若班级的学生数不为0if(studentSet.Tables“学生信息表“.Rows.Count!=0)/在该节点下加入一个空的子节点,以便之后能够展开该节点node.Nodes.Add(new TreeNode(“);break;,11,三、多窗格数据浏览窗体的主要程序代码(4/7),树型控件节点展开(3/3) case “班级节点“:myDataAdapter.SelectCommand.CommandText=“select 学号 fr

11、om “+“学生信息表 where 班级=“+nodeName+“;studentSet.Clear();n=myDataAdapter.Fill(studentSet,“学生信息表“);/清除要展开的节点下的所有节点,以便重新构造该节点的子节点e.Node.Nodes.Clear();/循环添加子节点for(int i=0;in;i+)TreeNode node=new TreeNode(studentSet.Tables“学生信息表“.Rowsi“学号“.ToString(),0,1);/增加节点标记,以便之后判断节点的类别node.Tag=“学号节点“;e.Node.Nodes.Add(

12、node);break; ,12,三、多窗格数据浏览窗体的主要程序代码(5/7),树型控件选择节点(1/3) private void treeView1_AfterSelect(object sender,System.Windows.Forms.TreeViewEventArgs e) string nodeType=e.Node.Tag.ToString();string number=e.Node.Text;if(nodeType=“学号节点“)myDataAdapter.SelectCommand.CommandText=“select * from 学生信息表 where 学号=“

13、+number+“;DataSet mySet=new DataSet();myDataAdapter.Fill(mySet,“学生信息表“);,13,三、多窗格数据浏览窗体的主要程序代码(6/7),树型控件选择节点(2/3) /将一条数据记录的文本信息显示在各标签中labelNumber.Text=mySet.Tables“学生信息表“.Rows0“学号“.ToString();labelName.Text=mySet.Tables“学生信息表“.Rows0“姓名“.ToString();labelSex.Text=mySet.Tables“学生信息表“.Rows0“性别“.ToString

14、();labelClass.Text=mySet.Tables“学生信息表“.Rows0“班级“.ToString();labelBirthday.Text=mySet.Tables“学生信息表“.Rows0“出生日期“.ToString();labelFace.Text=mySet.Tables“学生信息表“.Rows0“政治面貌“.ToString();labelNation.Text=mySet.Tables“学生信息表“.Rows0“民族“.ToString();labelPlace.Text=mySet.Tables“学生信息表“.Rows0“籍贯“.ToString();label

15、State.Text=mySet.Tables“学生信息表“.Rows0“学习状况“.ToString();/取应用程序当前文件夹路径string exePath=AppDomain.CurrentDomain.SetupInformation.ApplicationBase;/加上数据表中的相对路径构成相片文件的完整文件名string fileName=exePath+mySet.Tables“学生信息表“.Rows0“相片URL“.ToString();FileInfo test=new FileInfo(fileName);,14,三、多窗格数据浏览窗体的主要程序代码(7/7),树型控件

16、选择节点(3/3) /测试该相片文件是否存在if(test.Exists)/在图片框中显示相片Image image1=Image.FromFile(fileName); pictureBox1.Image=image1;elsepictureBox1.Image=null; else /清空显示区labelNumber.Text=“;labelName.Text=“;labelSex.Text=“;labelClass.Text=“;labelBirthday.Text=“;labelFace.Text=“;labelNation.Text=“;labelPlace.Text=“;label

17、State.Text=“;pictureBox1.Image=null; ,15,四、TreeView控件(1/5),TreeView控件称为树型控件,其节点呈树型结构,第一层的节点称为根节点,根节点之下的所有节点都称为子节点。TreeView控件的Nodes属性是树型控件的节点集合,它包括了节点的数据及节点的层次关系。构造TreeView控件的节点有两种办法:使用树节点编辑器编辑节点和编写程序代码添加节点。,16,四、TreeView控件(2/5),1、编写程序代码构造树型控件的根节点可以调用TreeView控件的 Nodes集合中的一些方法来构造TreeView的根节点。 Nodes.Ad

18、d(TreeNode node)方法 向TreeView控件添加一个根节点。调用该方法需要一个TreeNode类型的实参,也就是一个节点实例。使用的例子有:TreeNode node=new TreeNode(“北京“,0,1);treeView1.Nodes.Add(node) ; 构造一个节点实例node,该节点的文本为“北京”,节点未选中时的图标来自控件imageList1的第一幅图像,节点选中后的图标来自imageList1的第二幅图像。将节点Node添加到控件treeView1的根节点中。 Nodes.Remove(TreeNode node)方法 从TreeView控件中移除一个根

19、节点。该方法的参数是被移除的节点实例。 Nodes.RemoveAt(int Index)方法 从TreeView控件中移除一个根节点。该方法的参数是被移除的节点的索引号。 Nodes.Insert(int Index,TreeNode node)方法 向TreeView控件中插入一个根节点。第一个参数是插入后的节点索引号,第二个参数是被插入的节点实例。 Nodes.Clear()方法 清除TreeView控件中的所有根节点。当所有的根节点被清除后,其子节点自然不存在了。 Nodes.Count属性 节点集合中的根节点数。调用以上的方法和使用以上的属性,可以对TreeView控件的根节点进行操

20、作。6.2.2节中自定义方法StructRootNode()中从数据库读取数据来构造根节点是一个应用的例子。由于各个应用系统对节点的数据和结构在数据库中记录的方法和格式不同,构造TreeView控件的程序代码是不同的,但基本原理是相同的。,17,四、TreeView控件(3/5),2、编写程序代码构造树型控件的子节点TreeView控件的节点树是一个层次结构,每一个节点都有一个Nodes集合,该集合包含了本节点的所有直接下级子节点。每个Nodes都带有上述的Add、Remove、RemoveAt、Insert、Clear等方法和Count属性,使用每个节点的Nodes集合的方法和属性,就可以构

21、造各个节点的子节点来。例如:treeView1.Nodes0.Nodes.Add(new TreeNode(“湘潭“,0,1);向树型控件的第一个根节点添加一个子节点,该节点的文本为“湘潭”,未选中时的图标为控件imageList1的第一幅图片,选中后的图标为控件imageList1的第二幅图片。,18,四、TreeView控件(4/5),3、TreeView_BeforeExpand事件利用TreeView控件的BeforeExpand事件来构造TreeView控件的子节点是一个不错的设计。该事件在TreeView控件的节点即将展开之前引发,编程的基本原理是当某个节点即将展开时构造该节点的子

22、节点,那些不必展开的节点不需要构造它的子节点。事件处理程序的参数e带入了被展开节点的信息,获取e.Node.Text属性、e.Node.Index属性和e.Node.Tag属性的值,可以判别被展开的是哪个节点。e.Node.Text属性 被展开节点的文本。e.Node.Index属性 被展开节点的索引号。e.Node.Tag属性 被展开节点的标记。,19,四、TreeView控件(5/5),4、TreeView_AfterSelect事件当在树型控件上选择了某个节点后,将引发TreeView_AfterSelect事件。与TreeView_BeforeExpand事件处理程序类似,TreeView_AfterSelect事件处理程序的参数e将带入被选中的节点的数据,e.Node.Text属性、e.Node.Index属性和e.Node.Tag属性的值常被用来作为判别被选中的是哪个节点的编程依据。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报