《Windows窗体应用程序设计 .pptx》由会员分享,可在线阅读,更多相关《Windows窗体应用程序设计 .pptx(182页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、18.1Windows编程的基础知识 Windows窗体是制作标准Win32屏幕的一种更高级的方法,具有非常健全的功能。.NET Framework中的所有语言都使用Windows窗体来代替它们在图形窗体中所使用的组件。在.NET下,Windows窗体为所有的语言提供了一套丰富的、统一的控件和绘图功能,以及用于图形和绘图底层Windows服务的标准API。有了Windows窗体,任何图形和屏幕函数就不再需要使用内置的Windows图形接口了。第1页/共182页 Windows应用程序是运行在Windows操作系统中的单机程序或C/S结构的客户端程序。包括两方面:1、Windows编程接口和类库
2、 2、Windows应用程序的基本结构 第2页/共182页1 1 WindowsWindows编程接口和类库 操作系统为了方便应用程序设计,一般都要提供一个函数库,设计应用程序的一些共用代码都包含在这个库中。程序员可以调用库中函数,以简化编程。API MFC类库 组件和组件库 .Net FrameWork基础类库 第3页/共182页2 Windows2 Windows应用程序的基本结构 Windows应用程序和控制台应用程序的基本结构类似,程序的执行总是从Main()方法开始,主函数Main()必须在一个类中。但Windows应用程序使用图形界面,一般有一个窗口(Form),采用事件驱动方式工
3、作。第4页/共182页最简单的最简单的WindowsWindows应用程序如下:应用程序如下:using System;/using System;/引入命名空间引入命名空间public class Form1:Form /public class Form1:Form /类定义类定义 static void Main()/static void Main()/主函数主函数 Application.Run(new Form1();Application.Run(new Form1();(1 1)最简单的最简单的Windows应用程序应用程序第5页/共182页using System;using
4、 System.Drawing;public class Form1:Form/构造函数 publicForm1()this.Text=我的第一个程序;button1=new Button();/生成Button类对象(2 2)窗体中增加按钮(Button)(Button)控件的方法:Button button1;/生成Button类引用变量第6页/共182页 /修改按钮位置 button1.Location=new Point(25,25);/修改button1按钮的标题 button1.Text=“确定”;/button1_Click函数是按钮单击事件的单击事件处理函数 button1.C
5、lick+=new System.EventHandler(button1_Click);/按钮增加到窗体中并显示 (2 2)窗体中增加按钮(Button)(Button)控件的方法:第7页/共182页 static void Main()Application.Run(new Form1();/下边函数是单击按钮事件处理函数 private void button1_Click(object sender,EventArgs e)/单击按钮后执行的语句 “单击了我”;第8页/共182页在窗体中增加控件类的对象的步骤:v定义Button类变量button1v在构造函数中用new生成Button
6、类对象v在构造函数中修改button1的属性 v增加button1的事件处理函数 这些步骤对于增加任何控件都是相同的 结论:结论:第9页/共182页3 3 用VS2005VS2005创建WindowsWindows应用程序 【例】使用微软VS2005创建Windows应用程序的具体步骤如下:(1)运行VS2005程序,单击菜单“文件(F)|新建项目(P)”菜单项,打开“新建项目”对话框如下,单击“确定”按钮,创建项目。第10页/共182页 单击菜单单击菜单“文件文件(F F)|)|全部保存全部保存(L L)”菜单项,菜单项,打开打开“保存保存项目项目”对对话框话框如下,按图中那样填写,第一项是
7、项目名。如下,按图中那样填写,第一项是项目名。第11页/共182页(2)单击“确定”按钮,保存解决方案的所有文件。打开如下对话框。解决方案包括一个项目,解决方案的所有文件都保存到WindowsApplication7文件夹下。在WindowsApplication7文件夹中下有1个文件夹WindowsApplication7和文件 WindowsApplication7.sln。打开WindowsApplication7文件夹,可以看到有3个文件夹和5个文件。第12页/共182页第13页/共182页(3)下边在窗体中增加一个按钮,并为按钮增加单击事件函数。打开工具箱窗口,如下图。双击Butto
8、n控件,Button控件将放到Form1窗体中。打开属性窗口,修改属性,打开事件窗口,增加事件。第14页/共182页工具箱窗口工具箱窗口属性窗口属性窗口事件窗口事件窗口第15页/共182页4方案(Solution)(Solution)和项目(Project)(Project)一个应用(Application)可能包括一个或多个可执行程序,所有这些可执行程序的集合叫做一个应用解决方案。为了生成一个可执行程序,可能需要有一个或多个文件,所有这些文件的集合叫一个项目,因此项目是为了创建一个可执行程序所必需的所有的文件的集合。而一个方案中可能包括多个项目。解决方案资源管理器窗口可以为我们显示一个解决方
9、案的树形结构,树形结构中包含项目及项目中的文件。第16页/共182页各个文件夹和文件的用途如下:v bin文件夹 -保存编译后的程序v obj文件夹 保存临时文件v Properties文件夹 v Form1.cs 窗体文件-窗体代码文件v 窗体设计文件v Program.CS 程序入口5 Win Forms程序文件夹及文件后缀名 第17页/共182页PropertiesProperties文件夹 定义你程序集的属性 项目属性文件夹 一般只有一个 AssemblyInfo.cs 类文件,用于保存程序集的信息,如名称,版本等,这些信息一般与项目属性面板中的数据对应,不需要手动编写 BinBin文
10、件夹 目录用来保存项目生成后程序集,它有Debug和Release两个版本,分别对应的文件夹为bin/Debug和bin/Release,这个文件夹是默认的输出路径,我们可以通过:项目属性配置属性输出路径来修改。文件夹 第18页/共182页ObjObj文件夹 目录是用来保存每个模块的编译结果,在.NET中,编译是分模块进行的,编译整个完成后会合并为一个.DLL或.EXE保存到bin目录下。因为每次编译时默认都是采用增量编译,即只重新编译改变了的模块,obj保存每个模块的编译结果,用来加快编译速度。是否采用增量编译,可以通过:项目属性配置属性高级增量编译来设置。第19页/共182页.sln 解决
11、方案文件,为解决方案资源管理器提供显示管理文件的图形接口所需的信息。.csproj 项目文件,创建应用程序所需的引用、数据连接、文件夹和文件的信息。.cs 类模块代码文件。业务逻辑处理层的代码。文件第20页/共182页designer.cs是窗体设计器生成的代码文件,作用是对窗 体 上 的 控 件 做 初 始 化 工 作(在 函 数 InitializeComponent()中)VS2003以前都把这部分代码放到窗体的cs文件中,由于这部分代码一般不用手工修改,在VS2005以 后 把 它 单 独 分 离 出 来 形 成 一 个designer.cs文件与窗体对应。这样cs文件中剩下的代码都是
12、与程序功能相关性较高的代码利于维护。第21页/共182页文件:文件:namespaceProj8_1partialclassForm1/必需的设计器变量。必需的设计器变量。/清理所有正在使用的资源。清理所有正在使用的资源。/如果应释放托管资源,为如果应释放托管资源,为true;/否则为否则为false。protectedoverridevoidDispose(booldisposing)/重写基类重写基类Dispose()方法方法if(disposing&(components!=null)components.Dispose();base.Dispose(disposing);/调用基类的调
13、用基类的Dispose()方法方法第22页/共182页#regionWindows窗体设计器生成的代码窗体设计器生成的代码/设计器支持所需的方法设计器支持所需的方法-不要不要/使用代码编辑器修改此方法的内容。使用代码编辑器修改此方法的内容。/privatevoidInitializeComponent()/初始化方法初始化方法this.SuspendLayout();/button1宋体宋体,9F,调用模式窗体调用模式窗体;第23页/共182页/button2宋体宋体,9F,调用无模式窗体调用无模式窗体;/Form1this.Name=Form1;this.Text=Form1;this.Re
14、sumeLayout(false);第24页/共182页/STAThreadSTAThread是一种线程模型,用在程序的入口方法上(在C#C#和VB.NETVB.NET里是MainMain()()方法),指示应用程序的默认线程模型是单线程单元 (STA)(STA)。是STASTA。STAThreadSTAThread static void Main()static void Main()/程序运行在XPXP环境中能自动应用XPXP的主题样式 Application.EnableVisualStyles();Application.EnableVisualStyles();/使用GDIGDI还
15、是,falsefalse是 GDI+GDI+,truetrue是 GDIGDI Application.SetCompatibleTextRenderingDefault(Application.SetCompatibleTextRenderingDefault(false);false);/运行启动窗体 Application.Run(Application.Run(new new Form1();Form1();Program.CS第25页/共182页1、为什么要使用窗体简单强大方便灵活8.2Windows窗体概述第26页/共182页2什么是窗体Windows操作系统中,处处是窗体第27页
16、/共182页3、怎样创建Windows程序在VS中创建Windows应用程序的步骤:1、打开VS2、新建项目3、项目类型:VisualC#项目4、模板:Windows应用程序第28页/共182页4、认识WinForms项目名称项目名称主程序文件,主程序文件,包含包含Main方法方法我们编写代码的文件我们编写代码的文件解决方案名称解决方案名称窗体设计器代码文件,窗体设计器代码文件,代码为代码为VS自动生成自动生成第29页/共182页5、Main方法位于Program.cs文件Windows程序的入口/Program.csnamespaceMyFormstaticclassProgram.stat
17、icvoidMain()Application.EnableVisualStyles();Application.SetCompatibleTextRenderingDefault(false);Application.Run(newForm1();Main方法方法,程序的入口程序的入口VS自动生成自动生成一般不需要理会一般不需要理会第30页/共182页6、进一步认识窗体文件WinForms窗体有两种编辑窗口:窗体设计器窗口窗体设计器窗口窗体代码编辑窗口窗体代码编辑窗口第31页/共182页7、为什么使用partial具有双钥匙的密码箱具有双钥匙的密码箱第一把钥匙第一把钥匙第二把钥匙第二把钥匙为
18、了安全,两把钥匙分开放置为了安全,两把钥匙分开放置只有两把钥匙同时使用才能打开密码箱只有两把钥匙同时使用才能打开密码箱用用partial将将同一个窗体同一个窗体的代码分开放在的代码分开放在两个文件两个文件中:中:一个存放一个存放VS自动生成的代码自动生成的代码一个存放我们自己编写的代码一个存放我们自己编写的代码第32页/共182页程序员编写的代码程序员编写的代码VS自动生成的代码自动生成的代码/namespaceMyFormpartialclassForm1/privatevoidInitializeComponent()/VS自动生成的代码自动生成的代码this.ShowInTaskbar=
19、false;this.Name=Form1;this.Text=Form1;this.TopMost=true;运行时运行时合到一起合到一起组成一个窗体文件组成一个窗体文件8、怎样使用partial/Form1.csnamespaceMyFormpublicpartialclassForm1:FormpublicForm1()InitializeComponent();/我们编写的代码我们编写的代码第33页/共182页构造函数构造函数做一些初始化的工作做一些初始化的工作编译器自动调用编译器自动调用9、认识窗体类/Form1.csnamespaceMyFormpublicpartialclass
20、Form1:FormpublicForm1()InitializeComponent();冒号表示继承冒号表示继承Form类定义了窗体的基本属类定义了窗体的基本属性和行为性和行为我们创建的窗体都继承自我们创建的窗体都继承自Form类类Form1具有相应的属性和行为具有相应的属性和行为Form类:.NET预定义的窗体类Form1继承自Form第34页/共182页10、窗体的重要属性Name:窗体对象的名字,类似于变量的名字窗体对象的名字,类似于变量的名字BackColor:窗体的背景色窗体的背景色ShowInTaskBar:设置窗体是否出现在任务栏设置窗体是否出现在任务栏StartPositio
21、n:窗体第一次出现时的位置:窗体第一次出现时的位置Text:窗体标题栏显示的文字窗体标题栏显示的文字TopMost:设置窗体是否为最顶端的窗体设置窗体是否为最顶端的窗体WindowState:窗体出现时最初的状态(正常、最大化、最小化)窗体出现时最初的状态(正常、最大化、最小化)第35页/共182页11、为什么使用事件Windows系统中处处是事件:鼠标按下、鼠标释放、键盘键按下Windows系统通过事件处理来响应用户的请求显示开始菜单显示开始菜单我的电脑我的电脑窗口打开窗口打开事件触发事件触发事件响应的结果事件响应的结果单击单击双击双击第36页/共182页12、事件驱动Windows通过随时
22、响应用户触发的事件做出相应的响应事件驱动机制我们需要做的:针对我们感兴趣的事件,编写相应的事件处理程序 WinForms 应用程序也是事件驱动的第37页/共182页13、编写事件处理程序编写事件处理程序的步骤:1、选中控件 2、在“属性”窗口中单击3、找到事件4、生成事件处理方法5、编写处理代码第38页/共182页事件处理程序分析/窗体的鼠标移动事件处理程序窗体的鼠标移动事件处理程序privatevoidForm1_MouseMove(objectsender,MouseEventArgse)this.Text=String.Format(捕捉到鼠标了捕捉到鼠标了!(0,1),e.X,e.Y)
23、;示例中添加的事件处理程序:this关键字关键字代表窗体本身代表窗体本身鼠标的横纵坐标鼠标的横纵坐标窗体标题栏显窗体标题栏显示的文字示的文字鼠标事件参数鼠标事件参数事件源事件源第39页/共182页14、窗体的重要事件Load:窗体加载事件MouseClick:鼠标单击事件MouseDoubleClick:鼠标双击事件MouseMove:鼠标移动事件KeyDown:键盘按下事件KeyUp:键盘释放事件窗体有哪些事件?第40页/共182页窗体上各事件的引发顺序窗体上各事件的引发顺序当一个窗体启动时,执行事件过程的次序如下:当一个窗体启动时,执行事件过程的次序如下:(1)本窗体上的)本窗体上的Loa
24、d事件过程。事件过程。(2)本窗体上的)本窗体上的Activated事件过程。事件过程。(3)本窗体上的其他)本窗体上的其他Form级事件过程。级事件过程。(4)本窗体上包含对象的相应事件过程。)本窗体上包含对象的相应事件过程。一个窗体被卸载时,执行事件过程的次序如下:一个窗体被卸载时,执行事件过程的次序如下:(1)本窗体上的)本窗体上的Closing事件过程。事件过程。(2)本窗体上的)本窗体上的FormClosing事件过程。事件过程。(3)本窗体上的)本窗体上的Closed事件过程。事件过程。(4)本窗体上的)本窗体上的FormClosed事件过程。事件过程。第41页/共182页当鼠标在
25、窗体上点击时,窗体的背景色改变:如果是红色,变成黄色如果是黄色,变成绿色否则变成红色提示:提示:处理窗体的处理窗体的MouseClick事件事件利用利用Color类得到某种颜色:类得到某种颜色:红色红色Color.Red绿色绿色Color.Green黄色黄色Color.Yellow窗体的背景色:窗体的背景色:this.BackColor判断背景色:判断背景色:if(this.BackColor=Color.Red)例例第42页/共182页/鼠标单击事件鼠标单击事件privatevoidForm1_MouseClick(objectsender,MouseEventArgse)if(this.B
26、ackColor=Color.Red)this.BackColor=Color.Yellow;elseif(this.BackColor=Color.Yellow)this.BackColor=Color.Green;elsethis.BackColor=Color.Red;第43页/共182页15、窗体显示及分类1、启动窗体将自动显示。2、显示一个非启动窗体,即由一个窗体调用显示另一个窗体需要创建另一个窗体的对象,再用Show()或ShowDialog()方法显示。Form1f=newForm1();/创建窗体的对象f.Show();/非模式窗体或f.ShowDialog();/模式窗体窗体
27、显示第44页/共182页1 1 单文档窗体单文档窗体 单文档窗体一次只能打开一个活动窗体,窗体间没有包含关系。(1)窗体间的跳转步骤:1、定义窗体对象2、显示窗体窗体分类第45页/共182页定义窗体对象:定义窗体对象:被调用的窗体类名被调用的窗体类名窗体对象窗体对象=new被调用的窗体类名被调用的窗体类名();显示窗体:显示窗体:窗体对象窗体对象.Show();例:Form1f1=newForm1();f1.Show();第46页/共182页例:/非模式窗体Form1f1=newForm1();f1.Show();(2)模式窗体和非模式窗体模式窗体指不关闭当前窗就不能切换到其它窗体。窗体显示用
28、ShowDialog()方法。非模式窗体则可以在窗体间自由切换。窗体显示用Show()方法。例:模式窗体Form1f1=newForm1();f1.ShowDialog();第47页/共182页(1)什么是MDI在在MDI应用程序中可以应用程序中可以同时同时打开打开多个多个文件文件父窗口父窗口子窗口子窗口2 多文档窗体(MDI)第48页/共182页(2)创建MDI示例第49页/共182页(3)怎样创建MDI创建MDI的步骤:1、设置父窗体的IsMDIContainer属性2、设置子窗体的MdiParent属性ChildFormchildForm=newChildForm();childForm
29、.MdiParent=this;childForm.Show();创建子窗体的对象创建子窗体的对象设置子窗体的父窗体设置子窗体的父窗体显示子窗体显示子窗体建立子窗体窗口列表步骤:1、在父窗体中添加菜单条 2、添加“窗口”菜单 3、设置菜单控件的 MdiWindowListItem 属性 MDI中可以使用模式中可以使用模式窗体窗体吗?吗?第50页/共182页518.3Windows窗体控件概述Windows窗体是制作标准Win32屏幕的一种更高级的方法,具有非常健全的功能。.NETFramework中的所有语言都使用Windows窗体来代替它们在图形窗体中所使用的组件。在.NET下,Window
30、s窗体为所有的语言提供了一套丰富的、统一的控件和绘图功能,以及用于图形和绘图底层Windows服务的标准API。有了Windows窗体,任何图形和屏幕函数就不再需要使用内置的Windows图形接口了。第51页/共182页Label:标签标签lblTextBox:文本框文本框txtListBox:列表框列表框lstComboBox:组合框组合框cboGroupBox:分组框分组框grpPanel:面板面板pnlRadioButton:单选按钮单选按钮rdoButton:按钮按钮btn1、常见窗体控件及命名习惯、常见窗体控件及命名习惯第52页/共182页2、常用基本属性常用基本属性 1)Name:
31、表示控件的名称。2)Enabled:表示控件是否可以对用户交互作出响应。3)Font:表示控件中显示文字的字体格式,包括字体名称、字号以及是否以斜体、加粗和下划线显示。4)BackColor:表示控件的背景色。5)ForeColor:表示控件的前景色。6)Image:表示控件上显示的图像。7)Location:这是一个复合属性,表示控件的左上角相对于其容器的左上角的坐标。8)Size:这是一个复合属性,表示控件的高度和宽度。9)Visible:表示是否显示该控件。第53页/共182页3、常用事件常用事件 1)Click事件:单击该控件时触发。2)MouseEnter事件:鼠标进入控件区域内时触
32、发。3)MouseDown事件:在控件区域内按下鼠标键时触发。4)MouseLeave事件:鼠标离开控件区域时触发。5)KeyPress事件:当用户按下又放开某个ASCII字符键时,会引发当前拥有焦点对象的KeyPress事件。6)KeyDown和KeyUp事件:KeyDown和KeyUp事件发生在用户按下键盘上某键时,通常可编写其事件代码以判断用户按键的情况。第54页/共182页4、控件焦点与、控件焦点与Tab键次序键次序焦点(焦点(Focus)是指当前处于活动状态的窗体或控件。)是指当前处于活动状态的窗体或控件。要将焦点移到当前窗体中的要将焦点移到当前窗体中的textBox1文本框,可以文
33、本框,可以使用以下命令:使用以下命令:textBox1.Focus();第55页/共182页1 1 ButtonButton控件使用方法:1 1)从工具栏拖放一个buttonbutton到窗体常用:1 1TextText属性:显示控件文本信息例如:确定;2 2ClickClick事件:单击鼠标左键时触发。例如:private void button1_Click(object sender,private void button1_Click(object sender,System.EventArgs e)System.EventArgs e)MessageBox.Show(this,Mes
34、sageBox.Show(this,“你点击了 确定 按钮。”,“提示信息”,MessageBoxButtons.OK,MessageBoxButtons.OK,MessageBoxIcon.Information);MessageBoxIcon.Information);8.3基本控件第56页/共182页参数的含义:(1)object sender:代表发出事件的对象,此处指button1。使用时可以直接用button1,也可以像下面形式:Button button=(Button)sender;(2)System.EventArgs e:封装了事件的信息第57页/共182页 3.Mouse
35、Enter事件:鼠标进入按钮区域时触发。例如:private void button1_MouseEnter(object sender,System.EventArgs e)/颜色在System.Drawing名称空间下 4.MouseLeave事件:鼠标离开按钮区域时触发。例如:private void button1_MouseLeave(object sender,System.EventArgs e)第58页/共182页2 2 TextBoxTextBox控件/RichTextBoxRichTextBox控件常用:1 1TextText属性:表示文本框中的当前文本。例如:2 2Mul
36、tilineMultiline属性:表示是否可以包含多行内容。3 3MaxLengthMaxLength属性:表示用户可以在文本框控件中最多键 入的字符数。4 4PasswordCharPasswordChar属性:用于屏蔽在单行文本框控件中输入的的密码字符 。5 5、TextChangedTextChanged事件:更改TextText属性值时触发。例如:private void textBox1_TextChanged(object senderprivate void textBox1_TextChanged(object sender,System.EventArgs e)System
37、.EventArgs e)第59页/共182页第60页/共182页/标题为求积的按钮的单击事件处理函数如下:private void button1_Click(object sender,EventArgs e)float ss,ee;ss=Convert.ToSingle(textBox1.Text);ee=Convert.ToSingle(textBox2.Text);textBox3.Text=Convert.ToString(ss*ee);/标题为“清空”的按钮的单击事件处理函数如下:private void button2_Click(object sender,EventArgs
38、 e)textBox1.Text=;textBox2.Text=;textBox3.Text=;第61页/共182页6 6、KeyPressKeyPress事件:输入时按键触发。一般用于监控键盘的输入字符,可以用来限制键盘输入字符,如数字,可打印字符等。private void textBox1_KeyPress(object sender,KeyPressEventArgs e)/限制键盘输入 只能输入数字和退格键 if(!(e.KeyChar=48&e.KeyChar=0)/将左列表框中选中项移到右列表框中将左列表框中选中项移到右列表框中enbutton();/调用调用enbutton()
39、方法方法privatevoidbutton2_Click(objectsender,EventArgse)foreach(objectiteminlistBox1.Items)/将左列表框中所有项移到右列表将左列表框中所有项移到右列表框中框中enbutton();/调用调用enbutton()方法方法第85页/共182页privatevoidbutton3_Click(objectsender,EventArgse)if(listBox2.SelectedIndex=0)/将右列表框中选中项移到左列表框中将右列表框中选中项移到左列表框中enbutton();/调用调用enbutton()方法方
40、法privatevoidbutton4_Click(objectsender,EventArgse)foreach(objectiteminlistBox2.Items)/将右列表框中所有项移到左列表将右列表框中所有项移到左列表框中框中enbutton();/调用调用enbutton()方法方法第86页/共182页运行界面运行界面第87页/共182页 这种控件有两部分组成,即一个文本框和一个列表框。文本框可以用来显示当前选中的条目,如果文本框可以编辑,则可以直接输入选择的条目。单击文本框旁边带有向下箭头的按钮,则会弹出列表框,使用键盘或者鼠标可以在列表框中选择条目。常用属性:1Text属性、I
41、tems属性、DropDownStyle属性。其中DropDownStyle属性有:Simple:同时显示文本框和列表框,文本框可以被编辑。DropDown:只显示文本框,需要通过键盘或者鼠标打开列 表框,文本框可以被编辑。DropDownList:只显示文本框,需要通过键盘或者鼠标打 开列表框,文本框不可以被编辑。2SelectedIndexChanged事件 选择项发生改变时触发该事件。10 ComboBox控件第88页/共182页第一步:设计窗体。例:第89页/共182页第二步:添加comboBox1的SelectedIndexChanged事件。private void comboBo
42、x1_SelectedIndexChanged(object sender,System.EventArgs e)第90页/共182页第三步:添加comboBox2的SelectedIndexChanged事件。private void comboBox2_SelectedIndexChanged(object sender,System.EventArgs e)“第四步:运行,修改小组和项目选项,观察ListBox中内容的变化。第91页/共182页 该控件的用途是当鼠标位于某个控件上并停留一段时间后,显示该控件功能的提示信息。使用方法:向窗体拖放一个该控件,其它控件的属性里将添加一个Tool
43、TipToolTip属性,键入提示文本即可。主要属性有:Active:指示该控件当前是否处于激活状态。AutomaticDelay:设置经过多长时间显示提示信息,缺省值为500ms。AutoPopDelay:设置鼠标指针停留多长时间后消失提示信息。ToolTip控件,然后在构造函数中加入下列代码:选择参加的小组。);选择左边小组参加的项目。);各小组参加的项目列表。);运行,分别将鼠标在上述控件中停留一段时间,观察显示的提示信息。11 ToolTip控件第92页/共182页 MenuStrip MenuStrip 控件主要用于生成所在窗体的主菜单。用符号“&”“&”指定该菜单项的组合键,让其后
44、的字母带下划线显示,如编辑菜单项“E&xit”E&xit”,则会显示为“E Ex xit”it”,意思是可以直接用“Alt+x”Alt+x”组合键实现与单击该菜单项相同的功能;用符号“-”“-”可以在菜单中显示各项之间的分隔条。12 12 MenuStripMenuStrip控件 举例说明:(1)将MainMenu 组件从“工具箱”拖动到窗体上。(2)在菜单设计器中,创建一个顶级菜单项,并将其 Text 属性设置为“文件(&F)”,然后依次创建4个子菜单,并将其 Text 属性分别设置为“新建(&New)”、“打开(&Open)”、“-”和“退出(&Exit)”。第93页/共182页1 1、M
45、enuStripMenuStrip控件的基本属性(1 1)AllowItemReorderAllowItemReorder属性:当程序运行时,按下 Alt键是否允许改变各菜单项的左右排列顺序。默认值为falsefalse,当更改该属性值为truetrue时,按下 Alt键的同时可以用鼠标拖动各菜单项以调整其在菜单栏上的左右位置。(2 2)DockDock属性:指示菜单栏在窗体中出现的位置,默认值为TopTop。(3 3)GripStyleGripStyle属性:是否显示菜单栏的指示符,即纵向排列的多个凹点,默认值为HiddenHidden。当更改该属性值为VisibleVisible时,显示位
46、置由 GripMarginGripMargin属性指定。(4 4)ItemsItems属性:用于编辑菜单栏上显示的各菜单项。单击 ItemsItems属性后按钮,弹出 项集合编辑器 对话框,如图所示。第94页/共182页第95页/共182页2 2、MenuItemMenuItem菜单项的基本属性(1 1)CheckedChecked属性:指示菜单项是否被选中。默认值为falsefalse。(2 2)CheckOnClickCheckOnClick属性:决定单击菜单项时是否使其选中状态发生改变。默认值为falsefalse,即单击菜单项不会影响其 CheckedChecked属性:当更改该属性值
47、为truetrue时,则每次单击菜单项都会影响其 CheckedChecked属性,使其值在falsefalse和truetrue之间切换。(3 3)CheckStateCheckState属性:指示菜单项的状态。与复选框CheckBoxCheckBox控件的 ThreeStateThreeState属性相同,共有3 3个属性值:CheckedChecked、UncheckedUnchecked和IndeterminateIndeterminate,分别表示选中、未选中和不确定3 3种状态。(4 4)DisplayStyleDisplayStyle属性:指示菜单项上的显示内容。共有4 4个属性
48、值:NoneNone、TextText、ImageImage和ImageAndTextImageAndText,分别表示不显示任何内容、仅显示图标、同时显示文本和图标。默认值为ImageAndTextImageAndText。(5 5)DropDownItemsDropDownItems属性:单击该属性后的按钮,调出 项集合编辑器 对话框,以此编辑该菜单项对应得子菜单中的各菜单项。第96页/共182页(6 6)ImageImage属性:指定在该菜单项上显示的图标。(7 7)ImageScalingImageScaling属性:指定是否调整图标大小。默认属性值为SizeToFitSizeToFi
49、t,即调整图标大小以适应菜单项。该属性的另一个属性值为NoneNone,即不调整图标大小。(8 8)ShortcutScalingShortcutScaling属性:为菜单项指定的快捷键。单击该属性后的下拉按钮,出现如图所示的设置页面,用于设置菜单项的快捷组合键。设置时,可以选择 Ctrl、33个功能键的任意组合(注意 Shift键不能单独使用)作为修饰符;在 键 下拉列表框中选择快捷键,其中包括键盘可输入的任何字符。完成设置后即可使用说设置的快捷键调用菜单项的功能。该属性的默认值为NoneNone。注意:ShortcutKeysShortcutKeys属性所设置的快捷键与使用“&”“&”设置
50、的组合键,虽然都是通过设定的键盘操作完成与鼠标单击相同的功能,但是在本质上二者是不同的。“&”“&”设置的组合键只有在菜单项可见的情况下才可使用,所以不能称之为快捷键;而 ShortcutKeysShortcutKeys属性所设置的快捷键无论菜单项是否可见都可以使用。(9 9)ShowShortCutKeysShowShortCutKeys属性:指示是否在菜单项上显示快捷键。默认值为truetrue,即在菜单项上按照 ShowShortCutKeysShowShortCutKeys属性的设置显示快捷键。第97页/共182页3 3、MenuStripMenuStrip控件的常用属性(1 1)It