资源预览内容
第1页 / 共47页
第2页 / 共47页
第3页 / 共47页
第4页 / 共47页
第5页 / 共47页
第6页 / 共47页
第7页 / 共47页
第8页 / 共47页
第9页 / 共47页
第10页 / 共47页
亲,该文档总共47页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
VB.NET程序设计,任务七 利用高级控件完善系统,本章学习目标:掌握TreeView、Splitter控件的使用了解过程的递归调用TreeView控件中显示数据库中的数据掌握DataGridView控件的使用掌握DataGrid控件的使用(选学),目标,每个企业或机构都有层次性,在程序中要显示出企业或机构的组织关系,就要利用树结构啦。怎样把存放在数据库中的数据显示成树的结构?,问题的引入,任务:在机构设计和编码窗体中增加TreeView、Splitter控件。可以把TreeView中的数据保存到数据库,同时也能把数据库中的数据在TreeView 上显示出来,任务,任务:在DataGridView控件中显示数据库中的数据,任务,DataGridView控件,TreeView控件用于创建具有树形节点的层次结构列表该控件中每个节点还可以包含子节点父节点能够以展开或折叠方式显示项目列表树状列表的每个节点都是TreeNode类的实例,TreeView控件的相关知识,使用TreeView控件设计树状列表,TreeView 控件的常用属性、方法和事件:,使用TreeView控件设计树状列表,树状列表的每个节点都是TreeNode类的实例,注意每个节点TreeNode还有一个Nodes属性。 TreeNode类常用属性、方法:,使用TreeView控件设计树状列表,Nodes属性是TreeNodeCollection类的一个实例,是树状列表中所有节点构成的集合。可以通过Nodes(索引值) 来获得索引位置的节点,第一个节点的索引为0,第二个为1,依次类推。 TreeNodeCollection类的常用方法如下:,设计窗体时在TreeView中添加节点的步骤,拖动TreeView控件到窗体中单击选中Nodes属性,然后单击省略号按钮 ,打开“树节点编辑器”单击“添加根”按钮添加根节点 单击“添加子项”按钮添加当前节点的子节点单击“删除”按钮删除当前节点,程序运行时在TreeView中加入节点的方法是:使用TreeView控件Nodes属性的Add方法来加入根节点,使用某个节点的Nodes属性的Add方法来加入子节点。如要建立如图所示的数视图的代码:,TreeView1.Nodes.Add(“省医药集团”)Dim newNode As TreeNodenewNode = new TreeNode(“省医药集团机关”) TreeView1.Nodes(0).Nodes.Add(newNode) newNode.Nodes.Add(“董事会秘书处”)newNode = new TreeNode(“省医药公司”) TreeView1.Nodes(0).Nodes.Add(newNode) 第1个根节点下添加子节点newNode.Nodes.Add(“经理办公室”) 在省医药公司节点下添加子节点TreeView1.Nodes.Remove(TreeView1.SelectedNode) 删除选定的节点,程序运行时在TreeView中添加节点,随堂实训,1、在窗体设计中创建如图的树视图。2、然后再利用代码来创建如图的树视图,Splitter控件,Splitter 控件用于在运行时调整停靠控件的大小。Splitter控件常用于窗体上控件所显示的数据长度可变,如Windows资源管理器,它的数据窗格所包含的信息在不同的时间有不同的宽度,Splitter控件,为使用户能够在运行时调整停靠控件的大小,先将调整大小的控件停靠在容器的一条边缘(Dock属性),然后将Splitter控件停靠在该容器的同一侧。 如图所示样式设置属性如下: TreeView1.Dock = Left Splitter1.Dock = Left Panel1.Dock = Fill,Panel控件,过程的递归调用,Sub F1() F1()End Sub,Sub F1() F2()End SubSub F2() F1()End Sub,图1,图2,在调用一个过程中又出现直接或间接地调用该过程本身,称为过程的递归调用。 图1在调用F1的过程中,又要调用F1过程,这就是直接调用本过程 图2在调用F1的过程中要调用F2,而在调用F2过程中又要调用F1,这就是间接调用过程本身,过程的递归调用,例如:有3个人坐在一起,问第3个人多少岁?他说比第2个人大2岁。问第2个人岁数,他说比第1个人大2岁。最后问第1个人,他说10岁,请问第3人多大,上面两种递归调用都是无终止的自身调用,这是不应该出现的。只应该出现次数有限的、有终止的递归调用。这可以用条件控制,只有某个条件成立才继续执行递归调用,否则不再继续。,过程的递归调用,显然该例子是个递归问题。要求第3个人的年龄,就要知道第2个人的年龄,而第2个人的年龄也不知道,他的年龄取决于第1个人的年龄。age(3) = age(2) + 2age(2) = age(1) + 2age(1) = 10其过程如下:,age(3 ) =age(2) + 2 age(3)=14 age(2) =age(1) + 2 age(2)=12 age(1) =10,过程的递归调用,从图可知,求解分成两个阶段:第一个阶段是”回推”,即将第n个人的年龄表示为第(n-1)个人年龄,直到第1个人的年龄。此时age(1)已知,不必再前推。然后开始第二阶段,采用递推方法,从第1个人的已知推算出第2个人的年龄。 一个递归的问题可以分为“回推”和“递推”两个阶段。要经历许多步才能求出最后的值,还必须要有一个结束递归的条件。例如,age(1)=10,就是使递归结束的条件,过程的递归调用,可以用一个函数来描述上述过程: Function age(ByVal n as Integer) As IntegerDim c As Integerif n=1 thenc = 10elsec = age(n-1) + 2 递归调用End ifreturn c End Function,Age(3)得到age(3),c=age(2)+2,c=age(1)+2,c=10,age函数 n=3,age函数 n=2,age函数 n=1,Age(1) = 10,Age(2) = 12,Age(3) = 14,过程的递归调用,显示TreeView控件中的所有节点 Sub PrintNodes()For Each trNode As TreeNode in treeView1.Nodes 此处Nodes表示树视图控件的根节点 PrintRecursive(trNode) NextEnd Sub Sub PrintRecursive(ByVal trNode As TreeNode) MessageBox.Show(trNode.Text) For Each tn As TreeNode in trNodes.Nodes 此处Nodes表示的是当前节点的子节点 PrintRecursive(tn)递归调用 NextEnd Sub,遍历TreeView控件中每个节点,利用递归方法可完成此操作,该方法循环访问每个树集合中的每个节点。,从数据库中得到数据在TreeView控件显示,有如下的数据表(节点表):,该数据表中记录如下,从数据表记录中: ParentIndex= -1表示该节点为TreeView控件的根节点.表中对应的TreeView控件节点如图所示:,从数据表中以absIndex字段顺序查询出数据 调用InitTree(treeView1.Nodes, “-1”)过程。该过程如下Sub InitTree(ByRef nodes As TreeNodeCollection, ByVal sParentIndex As String) Dim tmpNode As TreeNode ,absIndex As String 选出数据源中ParentIndex为sParentIndex数据行,放在行集合DataRow的drs中 循环添加TreeNode, 即添加ParentIndex= sParentIndex的所有记录(子节点) For Each dr As DataRow In drs 获得节点所需数据 tmpNode = New TreeNode tmpNode.Text = dr(类别) absIndex = dr(AbsIndex) nodes.Add(tmpNode) 添加节点 递归调用, 添加子节点下的所有子节点 InitTree(nodes(nodes.Count - 1).Nodes, absIndex) NextEnd Sub,从数据库中得到数据在TreeView控件显示,要利用上面数据表中的数据在TreeView控件上显示,也要用到递归方法,随堂实训,利用数据库节点表中的数据,来创建如下的树视图,关于DataGridView控件,DataGridView控件具有极高的可配置性和可扩展性,它提供大量的属性、方法和事件,可以用来对该控件的外观和行为进行自定义。当需要在Windows窗体应用程序中显示表格数据时,应首先考虑使用DataGridView控件,然后再考虑使用其他控件(例如DataGrid)。一般设置两个属性: DataSource:某个数据集对象 DataMember:该数据集对象的某个表,用代码为DataGridView控件获取数据及设置一些属性,在属性窗口设置DataGridView的属性,小结,本任务学习了TreeView、DataGridView等高级控件的使用和过程的递归调用,完成TreeView控件中的节点在数据库的保存,以及数据库中的数据在TreeView控件上的显示,习题,以下有关DataGrid控件的内容为选学内容,关于DataGrid控件,DataGrid控件用于显示数据表中的数据,该控件可用来显示单个表,也可以显示多个不相关的表,也可以显示多个相关的表。,若工具箱中找不到DataGrid控件,可以在“所用 Windows窗体”分组工具箱中,右键,然后选择“选择项”,在出现的窗口中,选择“.NET Framework组件”选项卡,找到“DataGrid”然后在其前面打勾。然后点“确定”。那么DataGrid就添加到工具箱中。,DataGrid控件用于显示数据表中的数据,该控件可用来显示单个表,也可以显示多个不相关的表,也可以显示多个相关的表单个表:该表数据显示在一个网格中多个不相关的表:网格可显示一个树视图,可通过浏览该树视图找到想要显示的表。多个相关表:指定让网格显示父表。父表中的记录允许用户定位到相关的子行,
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号