树状控件(TreeView)用于以节点的形式显示文本和数据,这些节点按层次结构的顺序排列
1.TreeView控件的主要属性和事件
属性:
Nodes: TreeView中的所有节点
ImageList: 存放TreeView中节点的图像
ImageIndex: 节点默认的图像索引
SelectedImageIndex: 节点选中时图像的索引
SelectedNode: 当前选中的父节点
事件:
AfterSelect: 节点选中后发生
TreeView控件的Nodes属性表示TreeView控件的树结点集(TreeNodeCollection)
2.TreeView控件的Node属性
每个节点就是一个TreeNode类型.
属性:
Text: 节点上的文字
ImageIndex: 节点默认的图像索引.如果不设置,将保持与TreeView的设置相同
SelectImageIndex: 节点选中时图像的索引.如果不设置,将保持与TreeView的设置相同
Level: 节点在树中的深度,从0开始
Nodes:当前节点包含的子节点的集合
ParentNode: 当前节点的父节点
如果树中的节点是确定不变的,可以通过可视化的方式设置一棵静态树
需要按照以下步骤进行
(1)制作树状菜单
(2)添加拆分器
(3)显示学生列表信息
1.制作树状菜单
(1)向窗体添加一个新的TreeView控件,设置Name属性值为tvMenu;
(2)在属性窗口中单击Nodes属性旁边的省略号按钮,此时调用TreeNode编辑器.
(3)要向TreeView添加节点,必须存在根节点.如果不存在根节点,首先单击"添加根"按钮添加一个根节点.选择根节点或其他子节点,单击"添加子级"按钮,可添加其他子节点
每添加一个节点,应为该节点设施Name属性,Text属性
注意:
每个TreeView控件可以有多个根节点,每个根节点又可以有多个子节点
(4)将ImageList控件拖到窗体上,设置Name属性为ilIcons,并向其中添加若干个图像文件
(5)设置TreeView控件的ImageList属性,ImageIndex属性和SelectedImageIndex属性.
2.添加拆分器(SplitContainer)
SplitContainer控件可以包含任意控件,包括布局面板和其他SplitContainer控件,可以利用创建复杂的窗体
SplitContainer控件的操作如下:
(1)从工具箱中拖出SplitContainer控件放置在窗体上,在其属性窗口中设置Dock的属性为DockStyle.Fill
(2)将以编辑完成的tvMenu控件拖到SplitContainer控件的左面板中,设置tvMenu控件的Dock属性为DockStyle.Fill
(3)添加一个DataGridView控件到SplitContainer控件的右面板中,同样,将其Dock属性也设置为DockStyle.FIll
3.显示学生信息
(1)将DataGridView控件的Name属性赋值为dgvStudent
(2)自定义方法FillTable(),将查询的学生记录填充到dgvStudent控件中,并通过DataSource属性进行数据绑定
(3)在窗体的Load事件中调用该方法
在事件处理方法中tvMenu_AfterSelect()中获得用户选中节点
tvMenu.SelectedNode.Text返回节点名称tvMenu.SelectedNode.Level返回节点深度
可以使用DataView对象实现,直接在已有数据中筛选,且不必重新检索数据
2.1认识DataView
DataView为我们提供了DataTable的动态视图,并且可以对动态生成的视图中的数据进行排序,筛选等操作.它最重要的任务是运行WinForm控件进行数据绑定
DataView可用于查看DataTable中存储的数据的子集.这样就可以有两个控件给予同一个DataTable,但却提供了不同的数据视图.
一个DataSet中可以有多个DataTable,一个DataTable可以动态生成多个DataView
[语法]
DataView 数据视图名 = new DataView(DataTable 对象);
或
DataView 数据视图名 = DataTable 对象.DefaultView;
注意:
如果使用不采用任何参数的构造函数来创建DataView对象,那么在设置Table属性之前,将无法使用DataView
DataView的常用属性:
Table: 用于获取或设置源DataTable
Sort: 获取或设置DataView的一个或多个排序列以及排序顺序
RowFilter: 获取或设置用于筛选在DataView中查看那些行的表达式
Count: 在应用RowFilter后, 获取DataView中的行数
当创建DataView对象时,以构造函数的参数形式提供的任何初始排序或筛选条件可以实现最佳性能.
2.2利用DataView事项数据的筛选
经验:
在开发中,如果需要对DataGridView展示的数据进行动态筛选或排序,我们最好使用DataTable的DefaultView(默认视图)属性来得到DataTable的视图,这样,可以减少实例化DataView对象的步骤.
2.3在DataGridView中实现删除功能
DataGridView控件提供了强大而又灵活的以表格形式显示数据的方式,同时,它还支持编辑功能,可以在DataGridView控件中直接修改,删除数据,数据源中的数据中也会得到相应的更新.