高级控件及自定义控件的使用.ppt_第1页
高级控件及自定义控件的使用.ppt_第2页
高级控件及自定义控件的使用.ppt_第3页
高级控件及自定义控件的使用.ppt_第4页
高级控件及自定义控件的使用.ppt_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

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

文档简介

1、1,第二章 高级控件及自定义控件的使用,Visual C# 程序设计,2,TabControl控件 ListView控件 hScrollBar和vScrollBar控件 ProgressBar控件 TreeView控件 自定义控件,3,2.1 选项卡控件( TabControl),在 Windows 应用程序中,选项卡用于将相关的控件集中在一起,放在一个页面中 选项卡控件用于显示多个选项卡,其中每个选项卡均可包含图片和其他控件 选项卡相当于另一个窗体,可以容纳其他控件,选项卡控件,4,1、选项卡控件的属性,5,2、选项卡控件的事件,6,第一步: (1)创建一个TestTabControl的Wi

2、ndows应用程序,向设 计窗体上拖放一个TabControl控件,调整大小。 (2)向窗体上拖放一个ImageList控件,添加三个图标, 并修改ImageSize属性为32,32;修改ColorDepth为 Depth32Bit。 (3)设置TabControl的ImageList属性为imageList1。 (4)设置TabControl的TabPages属性,添加三个 TabPage,点击确定,再分别在三个TabPage上放一些控件便于区分。,【7-1】操作示例,7,设计界面如图所示:,通讯录界面,8,记事薄界面,9,日程安排界面,10,第二步:运行,观察结果。 第三步:修改image

3、List1的ImageSize属性为16,16;修改ColorDepth为Depth8Bit,重新运行观察结果。,11,示例二:动态添加TabPage控件以及向其内部动态 添加其他控件,12,7.2 ListView控件,ListView是一种加强型的ListBox,该控件可以使用列表的形式显示一组数据,Windows系统中的文件浏览器就是一个ListView控件。,13,7.2 ListView控件,ListView的展现方式非常的丰富,它可以让我们以4种不同的样式来展现一组数据。,14,ListView控件常用属性 1) View属性:表示数据的显示模式,常用的有如下选择: Large I

4、cons:大图标视图模式,在项的文本旁显示大的图标。 Small Icons:小图标视图模式,在项的文本旁显示小的图标。 List:列表视图模式,显示小图标,但项是垂直排列的,只显示单列 。 Details:详细资料视图模式,是最丰富的选项,它不但允许您查看项,还允许您查看为各项指定的任何子项 (5)Tile,15,2) Items属性:列表视图的选项集合。 向ListView 控件添加项的几种方法: 1、方法是在ListView 控件的属性窗口中选择Items属性。 2、还可以使用 ListView 控件的Items.Add()方法来为它添加新项,Add()方法的格式如下:Add(text,

5、imageIndex),text 为要添加项所显示的文本。imageIndex 为可选参数,指示所对应ImageList中的图标索引 3、也可以使用insert方法,和listbox的Items属性类似。,16,3)SelectedIndices属性:列表视图的选中项的下标的集合。 4)SelectedItems属性: 列表视图的所有选中项。,17,5)Colums属性:为ListView 控件添加列标题 1、在属性窗口中找到 Columns 属性,在弹出的集合编辑器中添加和删除列标题,可在编辑器中编辑显示的文本、宽度以及对齐方式。,2、使用Columns.Add方法动态添加列标题 ListV

6、iew1.Columns.Add(文本,宽度,对齐方式) 如:listView1.Columns.Add(列 1, 50, HorizontalAlignment.Left),注意:列标题只有在把ListView 控件的View 属性设置为 Details,才能显示出来。,18,6) MultiSelect属性:表示是否允许多行选择。 7) LargeImageList属性:这个属性包含ImageList,而ImageList包含大图像。这些图像可以在View属性为LargeIcon时使用。 8) SmallImageList属性:这个属性包含ImageList,而ImageList包含小图像

7、。这些图像可以在View属性为SmallIcon时使用。,19,10)FullRowSelect属性:单击某项时,是只选择该项,还是应选该项所在的整行。默认值为false。,说明:除非将ListView控件的View属性设置为Details,否则FullRowSelect属性无效。,20,11) GridLines属性:GridLines属性。指定在包含控件中项及其子项的行和列之间是否显示网格线。默认值为false。,说明:除非将ListView控件的View属性设置为Details,否则GridLines属性无效。,21,向ListView控件添加项,并且使用ListView的属性View属

8、性来使用4中方式展现其中的项。并支持如下功能。,【7-2】常见操作示例:,(2)向ListView的Details模式中添加列。,(3)向ListView的的各项添加图片,22,(4)向ListView中的每一项添加子项,并且在ListView的Details模式下显示各个子项。 (5)对ListView中的项进行分组:,【7-2】常见操作示例:,23,课堂练习:,24,运行结果如图所示,25,(5)对ListView中的项进行分组:,常见操作示例:,26,(6)对ListView中的项进行搜索:,常见操作示例:,27,用于上下或者左右滚动整个窗口或者文档 在 Microsoft Word 或

9、 Excel 中,为浏览多页面的文档提供了滚动条,滚动条,垂直滚动条,水平滚动条,滚动条的属性和事件如下:,带有滚动条的 MS Word 文档窗口,7.3 滚动条,28,29,private void hScrollBar1_ValueChanged(object sender, EventArgs e) Text = string.Format( 0:1 , hScrollBar1.Value, vScrollBar1.Value); private void vScrollBar1_ValueChanged(object sender, EventArgs e) Text = string

10、.Format( 0:1 , hScrollBar1.Value, vScrollBar1.Value); ,例子:,30,7.4 进度条(ProgressBar),用于指示操作的进度、完成的百分比 外观是排列在水平条中的一定数目的矩形,31,1、进度条的属性和方法,32,下面的例子说明了如何使用进度条来显示一个较长时间的计算过程。 第一步:在窗体上放两个ProgressBar控件,两个Label控件,两个TextBox控件,一个Button控件,如 图:,33,第二步:添加开始计算按钮的Click响应事件: private void button1_Click(object sender,

11、System.EventArgs e) button1.Enabled=false; int outLoop=Int32.Parse(textBox1.Text); int innerLoop=Int32.Parse(textBox2.Text); progressBar1.Maximum=outLoop; progressBar2.Maximum=innerLoop; for(int i=1;i=outLoop;i+) for(int j=1;j=innerLoop;j+) double d=i+j; if(j%100=0) progressBar2.Value=j; progressBar

12、1.Value=i; button1.Enabled=true; 第三步:运行,观察结果。,34,7.5 TreeView(树形视图)控件,可以使用TreeView控件显示具有层次结构的数据,比如磁盘目录、文件和数据库结构等。常见的是在Windows操作系统的资源管理器的左窗格中显示文件和文件夹。 树视图中的各个节点都可以包含其他节点,用户可以按展开或折叠的方式显示父节点或包含子节点的节点。,35,36,1、显示层层节点: treeView1.Nodes.Add( 父节点0 ); treeView1.Nodes0.Nodes.Add( 第1个父节点的子节点0 ); treeView1.Node

13、s0.Nodes0.Nodes.Add( 第1个父节点第1个子节点的孙节点0 ); treeView1.Nodes0.Nodes0.Nodes.Add( “ 第1个父节点第1个子节点的孙节点1 ” ); treeView1.Nodes0.Nodes.Add( 第1个父节点的子节点1 );treeView1.Nodes.Add( “ 父节点1” ); treeView1.Nodes1.Nodes.Add( “ 第2个父节点的子节点0 );依次类推 .,Nodes属性代码使用:,37,2、 提取节点数据: 1)明确路径的数据提取: string 父节点名字 = treeView1.Nodes0.T

14、ext;/ 第一个父节点 的文本 string 子节点名字 = treeView1.Nodes0.Nodes0.Text; / 第一个父节点的第一个子节点文本 string 孙节点名字 = treeView1.Nodes0.Nodes0.Nodes1.Text; / 第一个父节点第一个子节点的 第二个孙节点文本 依次类推 .,38,2)选中节点的提取: string 选中的节点 = treeView1.SelectedNode.Text; string 选中的节点的第一个子节点 = treeView1.SelectedNode.Nodes0.Text;string 选中的节点的第二个子节点的第

15、三个孙节点 =treeView1.SelectedNode.Nodes1.Nodes2.Text; 依次类推 .,3、 删除节点: treeView1.Nodes.Remove(treeView1.SelectedNode); treeView1.Nodes.RemoveAt(index);,4、清空节点: treeView1.Nodes.Clear();,39,5、 其他属性: treeView1.Nodes0.Nodes0.FirstNode,本节点的子集中第一个节点(非同级) treeView1.Nodes0.Nodes0.LastNode,本节点的子集中最后一个节点(非同级) tree

16、View1.Nodes0.Nodes0.NextNode,同级树节点的下一个节点(同级) treeView1.Nodes0.Nodes1.PrevNode,同级树节点的前一个节点(同级) treeView1.Nodes0.Nodes0.Parent, 获取父节点 treeView1.Nodes0.Nodes0.FullPath,获取节点完整路径,返回String,40,另外,通过将树视图的CheckBoxes属性设置为True,可以在节点旁边显示复选框,用户可以通过将节点的Checked属性设置为True或False来选中或清除节点。,41,常用方法:,42,常用事件:,会触发此事件,43,第

17、一步:向设计窗体拖放一个TreeView控件,两个 TextBox控件(name属性分别为textBoxRoot、 textBoxChild),四个Button控件(name属性分别为 buttonAddRoot、buttonAddChild、buttonDelete、 buttonEdit) 如下图所示。,【7-3】操作示例,44,45,第二步:从工具箱中向窗体拖放一个ImageList控件, 选择其Image属性,然后添加三幅图像。 第三步:设置TreeView控件的属性: ImageList属性:imageList1。 Nodes属性:添加初始的根节点和子节点以及节点 的图像。,46,第

18、四步:添加展开某个节点后发出的AfterExpand事件。 private void treeView1_AfterExpand(object sender, System.Windows.Forms.TreeViewEventArgs e) e.Node.ImageIndex=1; e.Node.SelectedImageIndex=1; ,47,第五步:添加折叠某个节点后发出的AfterCollapse事件。 private void treeView1_AfterCollapse(object sender, System.Windows.Forms.TreeViewEventArgs

19、e) e.Node.ImageIndex=0; e.Node.SelectedImageIndex=0; ,48,第六步:添加下列事件。 private void buttonAddRoot_Click(object sender, System.EventArgs e) /构造节点显示内容、取消选定时显示图像索引号、选定时显示图像索引号 TreeNode newNode=new TreeNode(textBoxRoot.Text,2,2); treeView1.Nodes.Add(newNode); ,49,private void buttonAddChild_Click(object s

20、ender, System.EventArgs e) TreeNode selectedNode=treeView1.SelectedNode; if(selectedNode=null) MessageBox.Show(“添加子节点前应选中一个节点。,提示); return; TreeNode newNode=new TreeNode(textBoxChild.Text,2,2); selectedNode.Nodes.Add(newNode); selectedNode.SelectedImageIndex=1; selectedNode.Expand();/展开,将新节点显示出来。 ,5

21、0,private void buttonDelete_Click(object sender, System.EventArgs e) TreeNode selectedNode=treeView1.SelectedNode; if(selectedNode=null) MessageBox.Show(“删除节点前应选中一个节点。,提示); return; /获得选中节点的父节点 TreeNode parentNode=selectedNode.Parent;,51,if(parentNode=null)/说明选中节点为根结点 treeView1.Nodes.Remove(selectedN

22、ode); else parentNode.Nodes.Remove(selectedNode); if(parentNode.Nodes.Count=0) /如果移去节点之后,父节点无子节点需改变图标 parentNode.ImageIndex=2; parentNode.SelectedImageIndex=2; ,52,private void buttonEdit_Click(object sender, EventArgs e) treeView1.SelectedNode.BeginEdit(); 注意:在使用这个属性的时候,必须设置treeView1.LabelEdit = tr

23、ue,否则会提示错误。 第七步:运行,测试结果。,53,虽然 Visual Studio.NET附带了大量的控件,但仍不能满足各个应用程序的特殊需要。比如说,Visual Studio.NET自带的控件不能以我们希望的方式进行使用,而我们却希望把控件的功能和界面一起封装。此时,我们就需要自己开发一个新的控件。 为此,Visual Studio.NET提供了一个工程类型Windows Control Library,使用它可以创建自己的控件。 自定义控件基本思想是允许开发人员生成新的功能,把现有的控件聚集到一个公共控件上,使之可以在应用程序中重复使用。,7.6 用户自定义控件,54,VS 200

24、5 winform 中编辑自定义控件,步骤如下:1.点击文件新建项目选择Windows控件库2.编辑用户所需的控件3.点击生成生成项目名称 ,完成这一步后会在bin或debug目录下看到项目名称.dll文件,这个便是你的控件库了4.在需要使用该控件的程序中点击工具选择工具项浏览选择刚才的那个.dll文件,这样你便会在你的工具箱中找到你的那个控件,55,定制控件示例 -从UserControl类继承,本示例将Label和Timer两个控件绑定到一起,实现通过标签显示系统当前时间,每秒刷新一次。,(1)在Visual Studio.NET 中创建一个新的C#工程,选择Windows 控件库,把新工程命名为ClockLib,如下图所示。,56,57,(2)单击设计界面,打开控件的属性。找到UserControl1.cs把名称改为Clock.cs。,(3)在用户控件中加入标签和计时器两个控件。 修改timer1控件的Enabled

温馨提示

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

最新文档

评论

0/150

提交评论