第七章 控件和组件的使用.docx
- 文档编号:11434512
- 上传时间:2023-03-01
- 格式:DOCX
- 页数:10
- 大小:20.63KB
第七章 控件和组件的使用.docx
《第七章 控件和组件的使用.docx》由会员分享,可在线阅读,更多相关《第七章 控件和组件的使用.docx(10页珍藏版)》请在冰豆网上搜索。
第七章控件和组件的使用
学习目标:
掌握TreeView。
掌握ListView。
理解Process。
理解Timer。
了解EventLog。
7.1TreeView控件:
使用Windows窗体TreeView控件,可以为用户显示节点层次结构。
树视图中的各个节点可能包含其他节点,称为“子节点”。
通过将树视图的CheckBoxes属性设置为True,可以显示在节点旁边带有复选框的树视图。
通过将节点的Checked属性设置为True或False,可以采用编程方式来选中或清除节点。
TreeView控件的主要属性包括:
Nodes和SelectedNode。
Nodes属性包含树视图中的顶级节点列表,SelectedNode属性设置当前选中的节点。
TreeView控件使用ImageList属性中命名的ImageList中的图像,ImageIndex属性可以设置树视图中节点的默认图像。
在节点旁边显示图标。
要使得节点前面显示图标,需要在窗体中加入一个ImageList控件,并设置TreeView的ImageList属性为该控件。
7.1.1控件本身的同图标相关的属性:
StateImageList:
表示自定义的状态图标,这个ImageList组件中的图标可用于设置每个节点的状态图标。
ImageIndex:
指出当你没有指出节点使用哪一个图标时,默认要使用的图标。
ImageKey:
同ImageIndex功能一样,不同的是使用图标的键值指出,ImageIndex是通过索引号指出。
SelectImageIndex:
指出当一个节点被选中后它的显示图标。
SelectImageKey:
同SelectImageKey功能相同,不同点与ImageKey和ImageIndex的不同一样。
7.1.2节点的图标属性:
每个节点都有ImageIndex,ImageKey,和SelectImageIndex,SelectImageKey属性,每个节点还有下面的图标相关的属性:
StateIamgeIndex:
使用索引号自定义的状态图标,图标位于控件中的StateImagelList定义的图标。
StateImageKey:
含义同StateImageIndex相同,不同的是使用键值指出状态图标,而不是索引号。
TreeView提供了使用代码动态加载节点的功能。
7.1.3使用代码添加节点:
在TreeView中,每个节点都是TreeNode类型的对象,每个节点都包含有用于容纳子节点的Nodes属性。
通过使用TreeView类型和Nodes属性,TreeView能够动态地添加删除节点。
(1)使用TreeView的Nodes属性的Add方法添加节点。
//定义一个新的节点
TreeNodenewNode=newTreeNode(“NewNode”);
//将上面的节点加入选中的节点作为子节点
treeView1.SelectedNode.Nodes.Add(newNode);
(2)使用TreeView的Nodes属性的Remove方法移出单个节点,使用Clear方法清除所有节点。
treeView1.Nodes.Remove(treeView1,SelectedNode);//删除选中的节点
treeView1.Nodes.Clear();//删除所有的节点
(3)当使用Add添加一个节点到TreeView的节点集合时,TreeView控件将重新绘制自身,
(4)当有大量的节点通过Add方法添加时,有可能会因为控件的重绘而引起闪烁。
在TreeView的节点集合添加节点前调用BeginUpdate()方法,该方法用于阻止TreeView在每次添加项时重绘自身。
最后,当结束向TreeView添加项时,调用控件的EndUpdate()方法通知TreeView重绘。
treeView1.BeginUpdate();
foreach(stringNodeTextinAppNodes)
treeView1.Nodes.Add(NodeText);
treeView1.EndUpdate();
(5)当需要添加大量节点时,可以使用AddRange,AddRange方法将一个数组的节点一次性添加到TreeView,因此,只重绘一次。
7.1.4获取节点信息:
TreeView的节点是按照树形结构填充的。
TreeView有很多事件,最常用的是节点选取后事件AfterSelect,当用户用鼠标点击一个节点后,该事件将被触发。
AfterSelect事件的参数是一个TreeViewEventArgs类型的对象,该对象中包括了被选中的节点信息。
也可以使用BeforeSelect事件在节点被选中前完成需要的处理。
7.2ListView控件的使用:
ListView控件允许显示项列表,这些项文本和图标(可选)来标识项的类型。
7.2.1显示模式:
ListView控件具有五种视图模式,分别是“LargeIcon”,“SmallIcon”,“List”,“Details”和“Title”。
View属性指出了ListView将使用的显示模式,其值是一个枚举型View。
动态改变显示模式
listView1.View=View.LargeIcon;
ListView的显示模式
显示模式
解释
LargeIcon
在各项文本旁显示大图标,如果控件足够大,则项显示在多列中
SmallIcon
除显示小图标外,其他方面与大图标视图模式相同
List
模式显示小图标,但总是显示在单列中
Details
Details模式在多列中显示项,它允许您在网格中显示项及子项,并通过列标头标识标题
Title
以平铺的方式显示
7.2.2ListView中项的添加和删除:
ListView中的所有显示项使用Items属性表示,每一个项是一个ListViewItem类型的类,列表中显示的项可以用五种不同的视图之一显示。
其中,Add用于添加一个项,AddRange用于添加一个数组项。
使用代码移除项是通过调用项集合的Remove或者RemoveAt方法来完成,其中Remove要求一个ListViewItem类型的参数,RemoveAt要求的参数是项的索引号码。
//向ListView中添加项
ListViewItemlvi=newListViewItem(“Item1”);
listView1.Items.Add(lvi);//或者使用AddRange添加
//从ListView中移除项
For(inti=0;i //也可以使用ListView1.Items.RemoveAt(listView1.SelectedItems[i].Index); listView1.Items.Remove(listView1.SelectedItems[i]); //添加或移除大量伪代码 listView1.BeginUpdate(); for(……) { listView.Items.Add();//或者Remove|RemoveAt } listView1.EndUpdate(); 7.2.3子项: ListView中的每个项同时也可以具有子项,子项是包含与父项相关的信息,同项一样,子项也是一个ListViewItem类型对象,子项被包括在项中的SubItems属性中,使用Add/AddRange方法向项中添加子项,使用Remove/RemoveAt移除子项。 7.2.4ListView的列头: 当ListView的显示模式是Details或者Title模式时,ListView允许像电子表格一样定义定义每个项和它的子项目的列头,对于其他模式列头是不可见的。 7.2.5分组显示ListView的项: 当ListView的显示模式是除List模式之外时,ListView控件允许它包含的项进行分组,并分组显示这些项。 分组的信息被保存在ListView的Groups属性中,Groups属性是ListView类型的对象集合。 有两种方式对ListView中的项目进行分组,一种是先定义组,再定义项,并设置每个项的Groups属性;另一种是先定义项,再定义组,然后再将项加入一个组。 7.2.6ListView成员和显示模式的关系: ListView的一些成员(属性、方法、事件)有特定的适用视图。 ListView的部分成员的适用视图 成员 解释 适用范围 Alignment属性 用于设置每一项的对齐方式 SmallIcon或LargeIcon AutoArrange属性 指出图标是否自动排列 FindNearestItem方法 按照给定的坐标开始搜索下一个项 AutoResizeColumn方法 调整列的宽度 Details DrawSubItem事件 自定义每一项的绘制 HeaderStyle属性 用于设置列头的样式 Columns属性 列头的集合 Details或Title GetItemAt方法 在给定的坐标获取一个项 FindItemWithText方法 查找时指定文本的第一项 Details、ListView或Title Groups属性 分组的集合 除List之外的所有视图 InsertionMark属性 将某项拖动到新位置时,用于指示期望的拖放位置 LargeIcon、SmallIcon或Title 7.3BackgroundWorker组件的使用: BackgroundWorker组件类简化了创建线程的操作,解决在Windows程序设计中可能会遇到耗时的操作。 使用步骤: 《1》初始化BackgroundWorker实例; 《2》在实例的DoWork中执行可能比较费时的操作,同时,用实例的RunWorkerCompleted事件监听你的执行是否已经完成; 《3》调用BackgroundWorker和RunWorkerAsync方法开始执行你定义的操作。 7.4Process组件的使用: Process组件用来在Windows程序需要操作本机上正在运行的进程或者启动一个外部程序进程时使用的控件。 Process提供了一些以Get开头的静态方法用于获取本地机器或者远程机器上正在运行的进程,这些方法有: ●GetProcesses,(得到本地机器或者远程机器《对于远程机器,必须有响应权限才能获取到》上所有正在运行的进程) ●GetProcessById,(通过进程的ID号获取进程) ●GetProcessesByName等。 (通过进程名获取进程信息) 当函数获取一个进程,则使用Kill等函数对该程序进程进行操作,比较重要的函数有: Kill: 用于停止进程。 CloseMainWindow: 向进程发送关闭窗体的信息。 Close: 关闭该进程的所有资源。 当需要复位输入和输出流时,Process需要一个详细的启动信息ProcessStartInfo。 下面时ProcessStartInfo的属性: 《1》UseShellExecute: 是否使用系统的Shell程序执行,如果要复位向输入输出流,必须将该值设置为false;默认情况下该属性的值是true。 《2》RedirectStandardInput: 是否复位向输入流,如果为true,则使用Process的StandardInput作为进程的输入流。 《3》RedirecrStandardOutput: 是否复位向输出流,如果为true,则使用Process的StandardOutput作为进程的输出流。 《4》Arguments: Proc启动时所用的参数。 7.5Timer控件的使用: Timer控件是定期引发事件的组件。 该组件主要的属性是Interval,该属性定义时间间隔的长度,其值以毫秒为单位。 若启用Timer组件,每个时间间隔Interval将引发一个Tick事件,这是添加要执行的代码的位置。 Timer组件的方法包括Start和Stop,这两种方法可以打开和关闭计时器,计时器在关闭时重置,不存在暂停Timer组件的方法。 使用Timer步骤: (1)添加Timer(手动代码添加或者从ToolBox拖入)。 (2)为计时器设置Interval属性(以毫秒为单位) (3)在Tick事件处理程序内编写合适的代码。 (4)将Enabled属性设置为true,以启动计时器。 Tick事件将开始发生,从而以设置的间隔运行过程。 (5)合适的时候,将Enabled属性设置为false,以使过程停止再次运行。 7.6EvenLog的使用: 使用EventLog类可以在应用程序中访问或自定义Windows事件日志。 事件源: 发出日志的源头。 事件源有一个使用字符区分的标识列,在程序中可以使用EventLog的静态方法SourceExists判断是否存在一个事件源。 //判断事件源是否存在 EventLog.SourceExists(“source1”); (1)如果存在这个事件源,可以使用EventLog的Source把EventLog同事件源关联起来: //关联EventLog与事件源 EventLoglog=newEventLog(); Log.Source=”source1”; (2)如果不存在这个事件源,在程序中可以使用CreateEventSource方法创建这个事件源: //创建事件源 EventLog.CreateEventSource(“source1”,”sourcedescription”); 注意: 1.如果写入事件日志,必须指定或创建一个Source事件源。 2.使用Source一次只能写入一个日志。 7.6.1写入日志信息: 一旦获取了一个EventLog,可以调用EventLog的WriteEvent、或者WriteEntry向系统中写入一条日志。 //写入一条日志信息 EventLoglog=GetEventLog(“TestLog”,”Windows.Advanced.Form”); (该代码使用上面的GetEventLog得到EventLog,并调用WriteEntry写入一条日志信息) 7.6.2读取日志信息: 使用EventLog的GetEventLog方法能够获取本机机器或者远程机器的所有EventLog信息。 常用的是先获取一个具体的EventLog,然后查询该EventLog下所有的日志信息,具体方法时查询EventLog的Entries属性。 //显示日志项 PrivatevoidGetEventMessages() { EventLoglog=GetEventLog(“TestLog”,”Window.Advanced.Form”); foreach(EventLogEntryentryinlog.Entries) MessageBox.Show(entry.Message); } //事件源: TestLog日志名: Windows.Advanced.Form
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第七章 控件和组件的使用 第七 控件 组件 使用