




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1控件&组件的使用第七章2教学目标了解EventLog。理解Process、Timer。掌握TreeView、ListView。
节点节点信息:TreeNode对象 节点集合:TreeNodeCollection
所有的节点由TreeNode对象构成。每个节点都包含一个子节点的集合。动态维护节点(Add,Remove,AddRange方法)如: TreeNodenewNode=newTreeNode(“NewNode”); treeView1.SelectedNode.Nodes.Add(newNode);3TreeView节点设置图标:ImageList。ImageIndex:通过索引指出默认使用的图标ImageKey:使用图标的键值指出SelectImageIndex:节点被选中后的显示图标SelectImageKey:4TreeViewTreeView使用代码添加节点:每个节点都是TreeNode类型的对象每个节点都包含有用于容纳子节点的Nodes属性使用Nodes属性的Add方法添加节点TreeNodenewNode=newTreeNode(“NewNode”);treeView1.SelectedNode.Nodes.Add(newNode);使用Nodes属性的Remove方法移除单个节点treeView1.Nodes.Remove(treeView1.SelectedNode);使用Clear方法清除所有节点TreeView.Nodes.Clear();
节点BeginUpdate和EndUpdate方法BeginUpdate:阻止TreeView在每次添加项时重绘自身EndUpdate:通知TreeView重绘 treeView1.BeginUpdate(); foreach(stringNodeTextinAppNodes) treeView1.Nodes.Add(NodeText); treeView1.EndUpdate();6TreeView获取节点信息节点是按照树形结构填充的,用递归算法实现TreeViewvoidGetNodeMessage(TreeNodetreeNode){ foreach(TreeNodenodeintreeNode.Nodes){ Console.WriteLine(node.Text); GetNodeMessage(node); }}voidGetTreeNodes(TreeViewtreeView){ TreeNodeCollectionNodes=treeView.Nodes; foreach(TreeNodeninNodes) GetNodeMessage(n);}TreeView的事件节点选取后事件:AfterSelect节点被选中前事件:BeforeSelectTreeView例:Chapter07_01List控件显示项列表例如:Windows资源管理器的文件列表显示树中当前选定的文件和文件夹的列表ListView10ListView:显示模式和显示项显示模式LargeIcon:显示大图标,显示在多列中SmallIcon:显示小图标List:显示小图标,显示在单列中Details:在多列中显示,允许在网格中显示项及子项Title:平铺的方式显示
View属性指出了ListView使用的显示模式:
ListView1.View=View.LargIcon11ListView:项的添加和删除ListView中的所有显示项使用Items属性表示ListView中每个项是类型为ListViewItem类型的对象使用代表ListView中所有项的Items属性操作项(Add();AddRange();Remove(),下同)。Add用于添加一个项AddRange用于添加一个数组项Remove要求一个ListViewItem类型的参数RemoveAt要求的参数是项的索引号码用BeginUpdate()和EndUpdate改善性能。ListViewItemlvi=newListViewItem("item1");listView1.Items.Add(lvi);
for(inti=0;i<listView1.SelectedItems.Count;i++)
//listView1.Items.Remove(listView1.SelectedItems[i]);
listView1.Items.RemoveAt(listView1.SelectedItems[i].Index);listView1.BeginUpdate();for(………){ listView1.Items.Add(…)//或者Remove|RemoveAt}listView1.EndUpdate();12子项:子项是包含与父项相关的信息子项也是一个ListViewItem类型的对象子项被包含在项中的SubItems属性中使用Add/AddRange方法向项中添加子项使用Remove/RemoveAt方法移除子项ListView:列头和分组显示ListViewItembookItem=newListViewItem("AdvancedWindow");bookItem.SubItems.Add(newListViewItem("100"));bookItem.SubItems.Add(newListViewItem("Evirc"));listView1.Items.Add(bookItem);13列头:仅仅显示模式是Details或者Title模式时,对列头的设置才有意义。列头是类型为ColumnHeader的对象,ListView的Columns属性代表列头的集合。 使用集合的Add,AddRange,Remove等维护列头。ListView:列头和分组显示ColumnHeaderch=newColumnHeader();ch.Text="Caption";listView1.Columns.Add(ch);14ListView:列头和分组显示分组显示:当ListView的显示模式是除List模式外时分组有效分组的信息保存在ListView中的Group属性中Groups属性是ListView类型的对象集合(1)初始化组对象,如:newListViewGroup(GroupHeader,HorizontalAlignment.Left)(2)使用集合方法维护组对象:Add,Remove,AddRange等15ListView:列头和分组显示分组显示:对项目分组方式1:指定项目的组属性:newListViewItem(text,group)或listviewItem.group=……
方式2:使用ListViewGroup的Items属性加入存在的项group1.Items.Add(item1);ListViewGrouplvg=newListViewGroup(GroupHeader,HorizontalAlignment.Center);listView1.Groups.Add(lvg);ListViewItemitem=newListViewItem(ItemText.lvg);ListViewItemitem=newListViewItem(ItemText);ListViewGrouplvg=newListViewGroup(GroupHeader,HorizontalAlignment.Center);lvg.Items.Add(item);listView1.Groups.Add(lvg);例:Chapter07_0217使用BackgroundWorkerBackgroundWorker的用途:BackgroundWorker类允许您在单独的专用线程上运行操作。耗时的操作(如下载和数据库事务)在长时间运行时可能会导致用户界面(UI)似乎处于停止响应状态。可以使用单独的线程完成这些费时的操作
BackgroundWorker的使用:初始化一个BackgroundWorker的实例在这个实例的DoWork中执行自己的比较费时的操作用实例的RunWorkerCompleted事件监听是否已经完成调用RunWorkerAsync方法执行你定义的操作18使用BackgroundWorkerprivatevoidStartProcessing(){BackgroundWorkerworker=newBackgroundWorker();worker.DoWork+=newDoWorkEventHandler(worker_DoWork);worker.RunWorkerCompleted+=newRunWorkerCompletedEventHandler(Worker_RunWorkerCompleted);worker.RunWorkerAsync();}voidworker_DoWork(objectsender,DoWorkEventArgse){Thread.Sleep(5000);}voidWorker_RunWorkerCompleted(objectsender,RunWorkerCompletedEventArgse){MessageBox.Show("Completed!!!");}19使用BackgroundWorkerRunWorkerAsnc的参数传递和DoWorkEventArgs:使用带参数的重载形式调用RunWorkerAsnc。使用DoWork事件中的DoWorkEventArgs类型参数获取参数。
voidworker_DoWork(objectsender,DoWorkEventArgse)
{
Thread.Sleep((int)e.Argument);
}例:Chapter07_03_BackgroundWorker20Process组件的使用获取运行中的进程以GetProcesses开头的方法获取进程,如:GetProcesses();//获取本机所有进程GetProcessByIdGetProcessByNamePrivatevoidTest_Porcess(){
using(TextWriterwriter=newStreamWriter(@"C:\Process1.txt")){foreach(ProcessproinProcess.GetProcesses())writer.WriteLine("{0}\t{1}\t{2}",pro.Id,pro.ProcessName,pro.MainWindowTitle);writer.Close();}}例:Chapter07_04_Process获取进程后,可以对该程序进程进行操作Kill:用于停止进程CloseMainWindow:向进程发送关闭窗体的信息Close:关闭该进程的所有资源Process组件的使用Process更实用的是在自己的应用程序中启动一个外部的应用程序启动外部进程,设置复位向输入和输出流,可以向外部程序发出命令,并得到执行的结果需要复位向输入和输出流,需要一个详细的启动信息ProcessStartInfo,其属性为:UseShellExecute:是否使用系统的Shell程序执行RedirectStandardInput:是否复位向输入流RedirectStandardOutput:是否复位向输出流Arguments:Process启动时所用的参数Process组件的使用privatevoidTest_Process2(){ProcessStartInfosinfo=newProcessStartInfo
(System.Environment.SystemDirectory+@"\cmd.exe");sinfo.UseShellExecute=false;sinfo.RedirectStandardInput=true;sinfo.RedirectStandardOutput=true;Processpro=Process.Start(sinfo);if(pro.Start()){pro.StandardInput.WriteLine("dirC:\\");pro.StandardInput.Flush();MessageBox.Show(pro.StandardOutput.ReadToEnd());}}例:Chapter07_04_Process2Timer控件是定期引发事件的组件主要属性是Interval,以毫秒为单位每个时间间隔Interval将引发一个Tick事件Timer组件主要方法包括Start和StopTimer组件不存在暂停使用Timer使用步骤添加Timer为计时器设置Interval在Tick事件处理程序内编写合适的代码将Enabled属性设置为true,以启动计时器合适的时候将Enabled属性设置为false,以使过程停止再次运行使用Timerprivatevoidtimer1_Tick(objectsender,EventArgse){Randomrand=newRandom((int)DateTime.Now.Ticks);this.tabControl1.SelectedTab.BackColor=Color.FromArgb(150,rand.Next(255),rand.Next(255),rand.Next(255));}使用Timer27使用Timer例:Timertimer=newtimer();timer.Interval=1000;timer.Tick+=newEventHandler(localTimer_Tick);timer.Enabled=true;voidlocalTimer_Tick(objectsender,EventArgse){
……}
例:Chapter07_05_TimerEventLog用于访问或自定义Windows事件日志使用EventLog事件源和日志事件源:发出日志的源头,包括日志名(相当于对事件源的一个分类)使用:可以使用EventLog的方法SourceExists判断是否存在一个事件源EventLog.SourceExists(“source1”);如果存在这个事件源,可把EventLog同其关联EventLoglog=newEventLog();log.Source=“source”;如果不存在这个事件源,可以创建一个EventLog.CreateEventSource(“source”,”sourcedescription”);使用EventLogprivateEventLogGetEventLog(str
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年福建省福清市高三第二次月考试卷含解析
- 赤峰应用技术职业学院《传统饮食文化概论》2023-2024学年第二学期期末试卷
- 院感知识竞赛
- 酒精中毒性精神障碍护理
- 音箱设计师培训总结
- 静配中心清场清洁流程
- 项目业务审核流程
- 生物-高考生物6月18日题目
- 韩国旅游攻略
- 烧烤烤串美食餐饮营销活动策划演示模板
- 《提案与方案优化设计》课件-第三部分 设计提案制作
- 2024年上海高职院校学生技能大赛手工艺术设计赛项样题
- 护理技巧卧床患者的身体翻身方法
- 信息科技课评分标准
- 语文小初衔接课堂策略研究报告
- 基于Python+MySQL的员工管理系统的设计与实现
- AutoCAD辅助园林景观设计
- 机加工厂投资计划书
- 2023学堂在线《中国建筑史-史前至两宋辽金》课后作业单元考核答案
- 仪器分析部分计算题
- 新能源及节能环保材料项目商业计划书
评论
0/150
提交评论