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

下载本文档

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

文档简介

VB.NET程序设计任务七

利用高级控件完善系统本章学习目标:掌握TreeView、Splitter控件的使用了解过程的递归调用TreeView控件中显示数据库中的数据掌握DataGridView控件的使用目标每个企业或机构都有层次性,在程序中要显示出企业或机构的组织关系,就要利用树结构啦。 怎样把存放在数据库中的数据显示成树的结构?问题的引入 在“机构设计情况”窗体中增加TreeView、Splitter控件。可以把数据库中的数据在TreeView

上显示出来,在单击某节点时,把该节点对应的一些信息在文本框TextBox里显示出来。 任务TreeView控件Splitter控件任务:

在DataGridView控件中显示数据库中的数据

任务DataGridView控件

TreeView控件用于创建具有树形节点的层次结构列表该控件中每个节点还可以包含子节点父节点能够以展开或折叠方式显示项目列表树状列表的每个节点都是TreeNode类的实例TreeView控件的相关知识使用TreeView控件设计树状列表属性描述Nodes所有节点(TreeNode)组成集合(代码中单独使用时,表示根节点)SelectedNode返回或设定当前选定的节点。方法描述ExpendAll展开列表树的全部节点.该方法没有参数事件描述AfterSelect当用户在TreeView控件中单击节点时触发AfterSelect事件TreeView

控件的常用属性、方法和事件:使用TreeView控件设计树状列表属性描述Nodes当前节点的所有子节点(TreeNode)组成的集合Text节点显示的内容Parent返回当前节点的父节点Checked节点是否被选中方法描述New()TreeNode的构造函数。创建显示内容为空的节点New(strAsString)TreeNode的构造函数。创建显示内容为str参数的值的节点Remove()删除当前节点树状列表的每个节点都是TreeNode类的实例,注意每个节点TreeNode还有一个Nodes属性。TreeNode类常用属性、方法:使用TreeView控件设计树状列表方法描述Add(strAsString)在相应节点下添加子节点,子节点名为str的参数值Add(TreeNode实例)在相应节点下添加子节点TreeNode实例Remove(TreeNode实例)在相应节点下删除TreeNode实例的子节点Clear()删除相应节点下的所有子节点Nodes属性是TreeNodeCollection类的一个实例,是树状列表中所有节点构成的集合。可以通过Nodes(索引值)来获得索引位置的节点,第一个节点的索引为0,第二个为1,依次类推。

TreeNodeCollection类的常用方法如下:设计窗体时在TreeView中添加节点的步骤拖动TreeView控件到窗体中单击选中Nodes属性,然后单击省略号按钮,打开“树节点编辑器”单击“添加根”按钮添加根节点单击“添加子项”按钮添加当前节点的子节点单击“删除”按钮删除当前节点程序运行时在TreeView中加入节点的方法是:使用TreeView控件Nodes属性的Add方法来加入根节点,使用某个节点的Nodes属性的Add方法来加入子节点。如要建立如图所示的树视图的代码:TreeView1.Nodes.Add(“省医药集团”)DimnewNodeAsTreeNodenewNode=newTreeNode(“省医药集团机关”)TreeView1.Nodes(0).Nodes.Add(newNode)‘newNode.Nodes.Add(“董事会秘书处”)newNode=newTreeNode(“省医药公司”)TreeView1.Nodes(0).Nodes.Add(newNode)’第1个根节点下添加子节点newNode.Nodes.Add(“经理办公室”)’在省医药公司节点下添加子节点‘TreeView1.Nodes.Remove(TreeView1.SelectedNode)‘删除选定的节点程序运行时在TreeView中添加节点随堂实训

1、在窗体设计中创建如图的树视图。2、然后再利用代码来创建如图的树视图参考代码1参考代码2随堂实训3、用代码创建如图所示的树结构图Splitter控件Splitter控件用于在运行时调整停靠控件的大小。Splitter控件常用于窗体上控件所显示的数据长度可变,如Windows资源管理器,它的数据窗格所包含的信息在不同的时间有不同的宽度Splitter控件

为使用户能够在运行时调整停靠控件的大小,先将调整大小的控件停靠在容器的一条边缘(Dock属性),然后将Splitter控件停靠在该容器的同一侧。

如图所示样式设置属性如下:

TreeView1.Dock=LeftSplitter1.Dock=Left

GroupBox1.Dock=FillGroupBoxTreeViewSplitter过程的递归调用SubF1()F1() EndSubSubF1()F2() EndSubSubF2()F1() EndSub图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)+2age(3)=14age(2)=age(1)+2age(2)=12age(1)

=10

过程的递归调用

从图可知,求解分成两个阶段:第一个阶段是”回推”,即将第n个人的年龄表示为第(n-1)个人年龄……,直到第1个人的年龄。此时age(1)已知,不必再前推。然后开始第二阶段,采用递推方法,从第1个人的已知推算出第2个人的年龄……。一个递归的问题可以分为“回推”和“递推”两个阶段。要经历许多步才能求出最后的值,还必须要有一个结束递归的条件。例如,age(1)=10,就是使递归结束的条件过程的递归调用可以用一个函数来描述上述过程:

Functionage(ByValnasInteger)AsInteger DimcAsInteger ifn=1then c=10 else c=age(n-1)+2‘递归调用

Endif returncEndFunction

Age(3)得到age(3)c=age(2)+2c=age(1)+2c=10age函数n=3age函数n=2age函数n=1Age(1)=10Age(2)=12Age(3)=14过程的递归调用‘显示TreeView控件中的所有节点SubPrintNodes()ForEachtrNodeAsTreeNodeintreeView1.Nodes‘此处Nodes表示树视图控件的根节点

PrintRecursive(trNode)NextEndSub

SubPrintRecursive(ByVal

trNodeAsTreeNode)

MessageBox.Show(trNode.Text)ForEachtnAsTreeNodeintrNode.Nodes‘此处Nodes表示的是当前节点的子节点

PrintRecursive(tn) ‘递归调用NextEndSub

遍历TreeView控件中每个节点,利用递归方法可完成此操作,该方法循环访问每个树集合中的每个节点。

从数据库中得到数据在TreeView控件显示字段名类别

AbsIndex

ParentIndex

字段类型文本数字数字说明节点显示的内容节点索引

对应的父节点索引有如下的数据表(节点表):该数据表中记录如下从数据表记录中:ParentIndex=-1表示该节点为TreeView控件的根节点.表中对应的TreeView控件节点如图所示:‘从数据表中以absIndex字段顺序查询出数据‘调用InitTree(treeView1.Nodes,“-1”)过程。该过程如下SubInitTree(ByRefnodesAsTreeNodeCollection,ByVal

sParentIndexAsString)DimtmpNodeAsTreeNode,absIndexAsString‘选出数据源中ParentIndex为sParentIndex数据行,放在行集合DataRow的drs中

‘循环添加TreeNode,即添加ParentIndex=sParentIndex的所有记录(子节点)ForEachdrAsDataRowIndrs'获得节点所需数据

tmpNode=NewTreeNode

tmpNode.Text=dr("类别")

absIndex=dr("AbsIndex")

nodes.Add(tmpNode)'添加节点

‘递归调用,添加子节点下的所有子节点

InitTree(nodes(nodes.Count-1).Nodes,absIndex)NextEndSub从数据库中得到数据在TreeView控件显示

要利用上面数据表中的数据在TreeView控件上显示,也要用到递归方法。

把和节点有关的表比如“节点表”直接拖到窗体上,接着,不用的控件删除,比如:DataGridView,BindingNavigator。然后添加一TreeView控件。最终界面如图所示。从数据库中得到数据在TreeView控件显示---代码从数据库中得到数据在TreeView控件显示---运行效果随堂实训利用数据库节点表中的数据,来创建如下的树视图关于DataGridView控件当需要在Windows窗体应用程序中显示表格数据时,应首先考虑使用DataGridView控件。使用DataGridView控制外观显示方式---调整列宽调整列宽通过属性AutoSizeColumnsMode实现,取值主要包括:AllCells:调整列宽,以适合该列中的所有单元格的内容,包括标题单元格。AllCellsExceptHeader:调整列宽,以适合该列中的所有单元格的内容,不包括标题单元格。ColumnHeader:调整列宽,以适合列标题单元格的内容。DisplayCells:调整列宽,以适合当前屏幕上显示的行的列中的所有单元格的内容,包括标题单元格。DisplayCellsExceptHeader:调整列宽,以适合当前屏幕上显示的行的列中的所有单元格的内容,不包括标题单元格使用DataGridView控制外观显示方式---某列单元格显示格式与字体通过属性Columns

DefaultCellStyle设置:使用DataGridView控制外观显示方式---某列单元格显示格式与字体外观格式设置颜色和字体等Format设置单元格的格式字符串设置了格式的列未设置格式的列使用DataGridView控制外观显示方式---奇数行的单元格样式小结

本任务学习了TreeView、DataGridView等高级控件的使用和过程的递归调用。完成数据库中的数据在TreeView控件上的显示。习题实训单击TreeView的某节点时,把该节点对应的一些信息在文本框TextBox里显示出来。实训—参考答案(新版本不用DataView对象)实训—参考答案step1创建一树节点类(TreeNodeData),然后:

1)添加五个Public字段:

温馨提示

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

评论

0/150

提交评论