任务七利用高级控件完善系统.ppt_第1页
任务七利用高级控件完善系统.ppt_第2页
任务七利用高级控件完善系统.ppt_第3页
任务七利用高级控件完善系统.ppt_第4页
任务七利用高级控件完善系统.ppt_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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 TreeNode newNode = 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,随堂练习,1、在窗体设计中创建如图的树视图。 2、然后再利用代码来创建如图的树视图,参考代码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 Sub Sub 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) + 2 age(2) = age(1) + 2 age(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 Integer Dim c As Integer if n=1 then c = 10 else c = age(n-1) + 2 递归调用 End if return 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 PrintRecursive(trNode) Next End Sub Sub PrintRecursive(ByVal trNode As TreeNode) MessageBox.Show(trNode.Text) For Each tn As TreeNode in trNodes.Nodes PrintRecursive(tn) 递归调用 Next End 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) Next End 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控件用于显示数据表中的数据,该控件可用来显示单个表,也可以显示多个不相关的表,也可以显示多个相关的表 单个表:该表数据显示在一个网格中 多个不相关的表:网格可显示一个树视图,可通过浏览该树视图找到想要显示的表。 多个相关表:指定让网格显示父表。父表中的记录允许用户定位到相关的子行,DataGrid控件的相关知识,DataGrid控件应在设计时使用DataSource和DataMember属性,或在运行时使用SetDataBinding方法将其绑定到数据源。 对于DataGrid有效的数据源包括:DataTable类对象、DataView类对象、DataSet类对象和DataViewManager类对象等。,DataGrid控件的相关知识,在DataGrid控件中显示数据,DataGrid控件显示数据表中的数据,有下面两种方法: 在程序中写代码显示数据表数据 窗体设计时显示数据表的数据,利用代码在DataGrid控件中显示数据,利用程序代码在DataGrid控件中显示单个数据表数据,Dim sConnString As String = “连接字符串“ Dim Mycn As New OleDbConnection(sConnString) Dim sqlStr As String = “Select * from 表名” Dim myDataAdapter As New OleDbDataAdapter(sqlStr,Mycn) Dim myDataSet As New DataSet() myDataAdapter.Fill(ds,“表名”) 将数据集绑定到DataGrid控件上 dataGrid1.SetDataBinding(ds,”表名”),随堂练习,利用代码在DataGrid中显示数据表中的数据,将使用OleDbDataAdapter控件将数据库引入程序,然后利用DataGrid控件,将数据显示出来。同时该控件还具有更新数据库数据的功能。 操作过程如下: 将OleDbDataAdapter控件从工具箱的数据工具组中拖入设计窗口中,此时出现数据适配器配置向导 单击下一步按钮,进入选择数据连接页面。单击新建连接按钮 出现数据连接属性对话框,在提供程序选项卡中选择Microsoft Jet 4.0 OLE DB Provider,在连接选项卡中选择要连接到的Access数据库。 单击测试连接按钮,显现“测试连接成功”对话框,说明数据库连接成功,窗体设计时在DataGrid控件中显示数据,单击确定按钮,返回选择您的数据连接对话框,单击下一步按钮,进入选择查询类型界面中,选择使用SQL语句 单击下一步按钮,进入生成SQL语句界面 单击查询生成器按钮,出现查询生成器和添加表对话框。 选择你要显示的数据表。在查询生成器中选择要查询和列 单击确定按钮返回生成SQL语句界面。确定查询无误后,单击下一步按钮,出现查看向导结果界面 单击确定按钮,返回设计窗口中,选择OleDbDataAdapter1,在属性窗口出现生成数据集选项。,窗体设计时在DataGrid控件中显示数据(续),单击生成数据集选项,出现生成数据集对话框。使用默认选项,单击确定按钮,生成数据集合 从 工具箱的Windows窗体中拖动DataGrid控件到设计窗口 设置DataGrid控件的DataSource属性为刚才生成的数据集,选择DataMemeber属性为要查询的表名 最后,要在要查看数据事件写如下代码 OleDbDataAdapter1.Fill(DataSet11,”表名”),窗体设计时在DataGrid控件中显示数据(续),随堂练习,在窗体中设计在DataGrid中显示数据表中的数据,DataGrid控件的表样式指定了特定表的格式设置,每个表一次只能定义一个表样式,可通过DataGridTableStyles类的实例来设置表样式 可借助DataGridColumnStyles类实例来创建一组自定义列样式。 在窗体设计时设置数据表的表样式和列样式的步骤如下: 选择窗体上的DataGrid控件,在“属性”窗口中,选择TableStyles属性并单击省略号,将会打开”DataGridTableStyle集合编辑器”对话框。 单击 添加按钮添加表样式后,在MappingName属性中,为表样式设置映射名称。映射名称用于指定哪个表使用该样式,设置DataGrid控件的表样式和列样式,单击 添加按钮添加表样式后,在MappingName属性中,为表样式设置映射名称。映射名称用于指定哪个表使用该样式,设置DataGrid控件的表样式和列样式,在表样式中添加列样式设置列的显示格式。在“DataGridTableStyles集合编辑器”对话框中,选择GridColumnStyle属性并单击省略号按钮,将打开“GridColumnStyle集合编辑器”对话框。如图所示,设置DataGrid控件的表样式和列样式,单击添加,将一个列样式添加到集合中 在MappingName属性中,为列样式设置映射名称。映射名称用于指定哪个字段应该使用这个列样式。 在“GridColumnStyle集合编辑器”对话框中还可设置该列的列宽、对齐方式、列标题等。 重复上一步,为更多的列设置列样式。,设置DataGrid控件的表样式和列样

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论