资源描述
Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,*,单击此处编辑母版标题样式,第三级,*,第章窗体应用(yngyng)程序设计,第一页,共181页。,2,8.1 Windows,编程的基础知识,Windows窗体是制作标准Win32屏幕的一种更高级的方法,具有非常健全的功能。.NET Framework中的所有语言都使用Windows窗体来代替它们在图形窗体中所使用的组件。在.NET下,Windows窗体为所有的语言提供了一套丰富的、统一的控件和绘图功能,以及用于图形和绘图底层(d cn)Windows服务的标准API。有了Windows窗体,任何图形和屏幕函数就不再需要使用内置的Windows图形接口了。,第二页,共181页。,Windows应用程序是运行在Windows操作系统中的单机程序或C/S结构的客户端程序。包括(boku)两方面:,1、Windows编程接口和类库,2、Windows应用程序的基本结构,第三页,共181页。,1 Windows编程接口(ji ku)和类库,操作系统为了(wi le)方便应用程序设计,一般都要提供一个函数库,设计应用程序的一些共用代码都包含在这个库中。程序员可以调用库中函数,以简化编程。,API,MFC类库,组件和组件库,.Net FrameWork基础类库,第四页,共181页。,2 Windows应用程序的基本(jbn)结构,Windows应用程序和控制台应用程序的基本结构类似,程序的执行(zhxng)总是从Main()方法开始,主函数Main()必须在一个类中。但Windows应用程序使用图形界面,一般有一个窗口(Form),采用事件驱动方式工作。,第五页,共181页。,最简单的Windows应用程序如下(rxi):,using System;/引入命名空间,public class Form1:Form /类定义,static void Main()/主函数,Application.Run(new Form1();,(1)最简单(jindn)的Windows应用程序,第六页,共181页。,using System;,using System.Drawing;,public class Form1:Form,/构造函数,public Form1(),this.Text=我的第一个程序(chngx);,button1=new Button();/生成Button类对象,(2)窗体中增加(zngji)按钮(Button)控件的方法:,Button button1;/生成Button类引用(ynyng)变量,第七页,共181页。,/修改按钮位置,button1.Location=new Point(25,25);,/修改button1按钮的标题,button1.Text=“确定(qudng)”;,/button1_Click函数是按钮单击事件的单击事件处理函数,button1.Click+=new System.EventHandler(button1_Click);,/按钮增加到窗体中并显示,(2)窗体中增加(zngji)按钮(Button)控件的方法:,第八页,共181页。,static void Main(),Application.Run(new Form1();,/下边函数(hnsh)是单击按钮事件处理函数(hnsh),private void button1_Click(object sender,EventArgs e),/单击按钮后执行的语句,“单击了我”;,第九页,共181页。,在窗体中增加控件类的对象的步骤(bzhu):,定义Button类变量button1,在构造函数中用new生成Button类对象,在构造函数中修改button1的属性,增加button1的事件处理函数,这些步骤(bzhu)对于增加任何控件都是相同的,结论(jiln):,第十页,共181页。,3 用VS2005创建(chungjin)Windows应用程序,【例】使用微软VS2005创建Windows应用程序(chngx)的具体步骤如下:,(1)运行VS2005程序(chngx),单击菜单“文件(F)|新建项目(P)”菜单项,打开“新建项目”对话框如下,单击“确定”按钮,创建项目。,第十一页,共181页。,单击菜单“文件(wnjin)(F)|全部保存(L)”菜单项,打开“保存项目”对话框如下,按图中那样填写,第一项是项目名。,第十二页,共181页。,(2)单击“确定”按钮,保存解决方案的所有文件。打开如下对话框。解决方案包括一个项目(xingm),解决方案的所有文件都保存到WindowsApplication7文件夹下。在WindowsApplication7文件夹中下有1个文件夹WindowsApplication7和文件 WindowsApplication7.sln。打开WindowsApplication7文件夹,可以看到有3个文件夹和5个文件。,第十三页,共181页。,第十四页,共181页。,(3)下边在窗体中增加一个按钮,并为按钮增加单击事件函数。打开工具箱窗口(chungku),如下图。双击Button控件,Button控件将放到Form1窗体中。打开属性窗口(chungku),修改属性,打开事件窗口(chungku),增加事件。,第十五页,共181页。,工具箱窗口(chungku)属性窗口(chungku)事件窗口(chungku),第十六页,共181页。,4 方案(fng n)(Solution)和项目(Project),一个应用(Application)可能包括一个或多个可执行程序,所有这些可执行程序的集合叫做一个应用解决方案。,为了生成一个可执行程序,可能需要有一个或多个文件,所有这些文件的集合叫一个项目,因此项目是为了创建一个可执行程序所必需的所有的文件的集合。而一个方案中可能包括多个项目。解决方案资源管理器窗口可以(ky)为我们显示一个解决方案的树形结构,树形结构中包含项目及项目中的文件。,第十七页,共181页。,各个文件夹和文件的用途如下:,bin文件夹,-保存编译后的程序,obj文件夹,保存临时文件,Properties文件夹,Form1.cs 窗体文件-窗体代码(di m)文件,窗体设计文件,Program.CS 程序入口,5 Win Forms程序(chngx)文件夹及文件后缀名,第十八页,共181页。,Properties文件夹,定义你程序集的属性 项目属性文件夹 一般只有一个 AssemblyInfo.cs 类文件,用于保存程序集的信息(xnx),如名称,版本等,这些信息(xnx)一般与项目属性面板中的数据对应,不需要手动编写,Bin文件夹,目录用来保存项目生成后程序集,它有Debug和Release两个版本,分别对应的文件夹为bin/Debug和bin/Release,这个文件夹是默认的输出路径,我们可以通过:项目属性配置属性输出路径来修改。,文件夹,第十九页,共181页。,Obj文件夹,目录是用来保存每个模块的编译结果(ji gu),在.NET中,编译是分模块进行的,编译整个完成后会合并为一个.DLL或.EXE保存到bin目录下。因为每次编译时默认都是采用增量编译,即只重新编译改变了的模块,obj保存每个模块的编译结果(ji gu),用来加快编译速度。是否采用增量编译,可以通过:项目属性配置属性高级增量编译来设置。,第二十页,共181页。,.sln,解决方案文件,为解决方案资源管理器提供显示管理文件的图形接口所需的信息。,.csproj,项目文件,创建应用程序所需的引用、数据连接、文件夹和文件的信息。,.cs,类模块(m kui)代码文件。业务逻辑处理层的代码。,文件(wnjin),第二十一页,共181页。,designer.cs,是窗体设计器生成的代码文件,作用是对窗体上的控件做初始化工作(在函数InitializeComponent()中)VS2003以前都把这部分代码放到窗体的cs文件中,由于这部分代码一般不用手工修改,在VS2005以后把它单独分离出来形成一个designer.cs文件与窗体对应。这样(zhyng)cs文件中剩下的代码都是与程序功能相关性较高的代码利于维护。,第二十二页,共181页。,文件:,namespace Proj8_1,partial class Form1,/,/必需的设计器变量。,/,/,/清理所有正在使用的资源。,/,/如果应释放托管资源,为true;,/否则(fuz)为false。,protected override void Dispose(bool disposing),/重写基类Dispose()方法,if(disposing&(components!=null),components.Dispose();,base.Dispose(disposing);/调用基类的Dispose()方法,第二十三页,共181页。,#region Windows 窗体设计器生成的代码,/,/设计器支持所需的方法-不要,/使用代码编辑器修改此方法的内容(nirng)。,/,private void InitializeComponent()/初始化方法,this.SuspendLayout();,/button1,宋体,9F,调用模式窗体;,第二十四页,共181页。,/button2,宋体,9F,调用(dioyng)无模式窗体;,/Form1,this.Name=Form1;,this.Text=Form1;,this.ResumeLayout(false);,第二十五页,共181页。,/STAThread是一种线程模型,用在程序的入口方法上(在C#和VB.NET里是Main()方法),指示应用(yngyng)程序的默认线程模型是单线程单元 (STA)。,是STA。,STAThread,static void Main(),/程序运行在XP环境中能自动应用(yngyng)XP的主题样式,Application.EnableVisualStyles();,/使用GDI还是,false是 GDI+,true是 GDI,Application.SetCompatibleTextRenderingDefault(false);,/运行启动窗体,Application.Run(new Form1();,Program.CS,第二十六页,共181页。,1、为什么要使用(shyng)窗体,简单,强大,方便(fngbin),灵活,8.2 Windows窗体概述(i sh),第二十七页,共181页。,2 什么(shn me)是窗体,Windows 操作系统(co zu x tn)中,处处是窗体,第二十八页,共181页。,3、怎样(znyng)创建 Windows 程序,在 VS 中创建 Windows 应用程序的步骤(bzhu):,1、打开 VS,2、新建项目,3、项目类型:Visual C#项目,4、模板:Windows 应用程序,第二十九页,共181页。,4、认识(rn shi)WinForms,项目名称,主程序文件(wnjin),,包含Main方法,我们(w men)编写代码的文件,解决方案名称,窗体设计器代码文件,,代码为,VS,自动生成,第三十页,共181页。,5、Main 方法(fngf),位于 Program.cs 文件(wnjin),Windows程序的入口,/,Program.cs,namespace MyForm,static class Program,.,static void,Main,(),Application.EnableVisualStyles();,Application.SetCompatibleTextRenderingDefault(false);,Application.Run(new Form1();,Main 方法,程序(chngx)的入口,VS,自动生成,一般不需要理会,第三十一页,共181页。,6、进一步认识(rn shi)窗体文件,WinForms 窗体有两种编辑(binj)窗口:,窗体设计(shj)器窗口,窗体代码编辑窗口,第三十二页,共181页。,7、为什么使用(shyng)partial,具有双钥匙的密码箱,第一把钥匙,第二把钥匙,为了(wi le)安全,两把钥匙分开放置,只有两把钥匙同时使用(shyng)才能打开密码箱,用,partial,将,同一个窗体,的代码分开放在,两个文件,中:,一个存放,VS,自动生成的代码,一个存放我们自己编写的代码,第三十三页,共181页。,程序员编写(binxi)的代码,VS自动生成(shn chn)的代码,/,namespace MyForm,partial class Form1,/,private void InitializeComponent(),/VS自动(zdng)生成的代码,this.ShowInTaskbar=false;,this.Name=Form1;,this.Text=Form1;,this.TopMost=true;,运行时,合到一起,组成一个窗体文件,8,、怎样使用,partial,/,Form1.cs,namespace MyForm,public,partial,class Form1:Form,public Form1(),InitializeComponent();,/,我们编写的代码,第三十四页,共181页。,构造函数,做一些初始化的工作,编译器自动(zdng)调用,9、认识(rn shi)窗体类,/,Form1.cs,namespace MyForm,public partial class Form1:Form,public Form1(),InitializeComponent();,冒号表示继承,Form类定义(dngy)了窗体的基本属性和行为,我们创建的窗体都继承自Form类,Form1具有相应的属性和行为,Form,类:.,NET,预定义的窗体类,Form1,继承自,Form,第三十五页,共181页。,10、窗体的重要(zhngyo)属性,Name:窗体对象(duxing)的名字,类似于变量的名字,BackColor,:,窗体的背景色,ShowInTaskBar:设置窗体是否(sh fu)出现在任务栏,StartPosition,:窗体第一次出现时的位置,Text,:,窗体标题栏显示的文字,TopMost,:,设置窗体是否为最顶端的窗体,WindowState,:,窗体出现时最初的状态(正常、最大化、最小化),第三十六页,共181页。,11、为什么使用(shyng)事件,Windows 系统中处处是事件:,鼠标按下、鼠标释放、键盘键按下,Windows 系统通过事件处理来响应(xingyng)用户的请求,显示(xinsh)开始菜单,我的电脑,窗口打开,事件触发,事件响应的结果,单击,双击,第三十七页,共181页。,12,、事件驱动,Windows 通过随时响应用户触发(chf)的事件做出相应的响应事件驱动机制,我们需要做的:,针对(zhndu)我们感兴趣的事件,编写相应的事件处理程序,WinForms,应用程序也是事件驱动的,第三十八页,共181页。,13、编写(binxi)事件处理程序,编写事件处理程序的步骤(bzhu):,1、选中控件,2、在“属性”窗口中单击,3、找到事件,4、生成事件处理方法,5、编写处理代码,第三十九页,共181页。,事件(shjin)处理程序分析,/窗体的鼠标移动(ydng)事件处理程序,private void Form1_MouseMove(object sender,MouseEventArgs e),this.Text=String.Format(捕捉到鼠标了!(0,1),e.X,e.Y);,示例中添加(tin ji)的事件处理程序:,this,关键字,代表窗体本身,鼠标的横纵坐标,窗体标题栏显示的文字,鼠标事件参数,事件源,第四十页,共181页。,14、窗体的重要(zhngyo)事件,Load :窗体加载事件,MouseClick:鼠标单击事件,MouseDoubleClick:鼠标双击事件,MouseMove:鼠标移动(ydng)事件,KeyDown:键盘按下事件,KeyUp:键盘释放事件,窗体有哪些(nxi)事件?,第四十一页,共181页。,窗体上各事件的引发顺序,当一个窗体启动时,执行(zhxng)事件过程的次序如下:,(1)本窗体上的Load事件过程。,(2)本窗体上的Activated事件过程。,(3)本窗体上的其他Form级事件过程。,(4)本窗体上包含对象的相应事件过程。,一个窗体被卸载时,执行(zhxng)事件过程的次序如下:,(1)本窗体上的Closing事件过程。,(2)本窗体上的FormClosing事件过程。,(3)本窗体上的Closed事件过程。,(4)本窗体上的FormClosed事件过程。,第四十二页,共181页。,当鼠标在窗体上点击(din j)时,窗体的背景色改变:,如果是红色,变成黄色,如果是黄色,变成绿色,否则变成红色,提示:,处理窗体的 MouseClick 事件,利用Color类得到某种颜色(yns):,红色Color.Red 绿色Color.Green 黄色Color.Yellow,窗体的背景色:this.BackColor,判断背景色:if(this.BackColor=Color.Red),例,第四十三页,共181页。,/鼠标单击事件(shjin),private void Form1_MouseClick(object sender,MouseEventArgs e),if(this.BackColor=Color.Red),this.BackColor=Color.Yellow;,else if(this.BackColor=Color.Yellow),this.BackColor=Color.Green;,else,this.BackColor=Color.Red;,第四十四页,共181页。,15、窗体显示(xinsh)及分类,1、启动窗体将自动显示。,2、显示一个非启动窗体,即由一个窗体调用显示另一个窗体需要创建(chungjin)另一个窗体的对象,再用Show()或ShowDialog()方法显示。,Form1 f=new Form1();/创建(chungjin)窗体的对象,f.Show();/非模式窗体,或 f.ShowDialog();/模式窗体,窗体显示(xinsh),第四十五页,共181页。,1 单文档窗体,单文档窗体一次只能打开一个活动窗体,窗体间没有(mi yu)包含关系。,(1)窗体间的跳转,步骤:,1、定义窗体对象,2、显示窗体,窗体分类(fn li),第四十六页,共181页。,定义(dngy)窗体对象:,被调用的窗体类名(li mn)窗体对象=new 被调用的窗体类名(li mn)();,显示(xinsh)窗体:,窗体对象,.,Show();,例:,Form1 f1=new Form1();,f1.Show();,第四十七页,共181页。,例:,/非模式(msh)窗体,Form1 f1=new Form1();,f1.Show();,(2)模式窗体和非模式窗体,模式窗体指不关闭当前窗就不能切换到其它窗体。窗体显示用ShowDialog()方法(fngf)。,非模式窗体则可以在窗体间自由切换。窗体显示用Show()方法(fngf)。,例:,模式(msh)窗体,Form1 f1=new Form1();,f1.ShowDialog();,第四十八页,共181页。,(1)什么(shn me)是MDI,在 MDI 应用程序中可以同时(tngsh)打开多个文件,父窗口(chungku),子窗口,2 多文档窗体(,MDI),第四十九页,共181页。,(2)创建(chungjin)MDI示例,第五十页,共181页。,(3)怎样(znyng)创建MDI,创建 MDI 的步骤:,1、设置(shzh)父窗体的 IsMDIContainer 属性,2、设置(shzh)子窗体的 MdiParent 属性,ChildForm childForm=new ChildForm();,childForm.MdiParent=this;,childForm.Show();,创建(chungjin)子窗体的对象,设置子窗体的父窗体,显示子窗体,建立,子窗体窗口列表,步骤:,1、在父窗体中添加菜单条,2、添加“窗口”菜单,3、设置菜单控件的,MdiWindowListItem,属性,MDI,中可以使用模式,窗体,吗?,第五十一页,共181页。,52,8.3 Windows窗体控件概述(i sh),Windows窗体是制作标准Win32屏幕的一种更高级的方法,具有非常健全的功能。.NET Framework中的所有(suyu)语言都使用Windows窗体来代替它们在图形窗体中所使用的组件。在.NET下,Windows窗体为所有(suyu)的语言提供了一套丰富的、统一的控件和绘图功能,以及用于图形和绘图底层Windows服务的标准API。有了Windows窗体,任何图形和屏幕函数就不再需要使用内置的Windows图形接口了。,第五十二页,共181页。,Label:标签(bioqin),lbl,TextBox,:,文本框,txt,ListBox:,列表框,lst,ComboBox:组合(zh)框,cbo,GroupBox,:,分组框,grp,Panel:面板(min bn),pnl,RadioButton:,单选按钮,rdo,Button,:,按钮,btn,1,、常见窗体控件及命名习惯,第五十三页,共181页。,2、常用基本属性,1)Name:表示控件的名称(mngchng)。,2)Enabled:表示控件是否可以对用户交互作出响应。,3)Font:表示控件中显示文字的字体格式,包括字体名称(mngchng)、字号以及是否以斜体、加粗和下划线显示。,4)BackColor:表示控件的背景色。,5)ForeColor:表示控件的前景色。,6)Image:表示控件上显示的图像。,7)Location:这是一个复合属性,表示控件的左上角相对于其容器的左上角的坐标。,8)Size:这是一个复合属性,表示控件的高度和宽度。,9)Visible:表示是否显示该控件。,第五十四页,共181页。,3、常用事件,1)Click事件:单击该控件时触发。,2)MouseEnter事件:鼠标进入(jnr)控件区域内时触发。,3)MouseDown事件:在控件区域内按下鼠标键时触发。,4)MouseLeave事件:鼠标离开控件区域时触发。,5)KeyPress事件:当用户按下又放开某个ASCII字符键时,会引发当前拥有焦点对象的KeyPress事件。,6)KeyDown和KeyUp事件:KeyDown和KeyUp事件发生在用户按下键盘上某键时,通常可编写其事件代码以判断用户按键的情况。,第五十五页,共181页。,4、控件焦点与Tab键次序(cx),焦点(Focus)是指当前处于活动状态的窗体或控件。,要将焦点移到当前(dngqin)窗体中的textBox1文本框,可以使用以下命令:,textBox1.Focus();,第五十六页,共181页。,1 Button控件,使用方法:,1)从工具栏拖放一个button到窗体,常用:,1Text属性:显示控件文本信息,例如(lr):确定;,2Click事件:单击鼠标左键时触发。,例如(lr):,private void button1_Click(object sender,System.EventArgs e),MessageBox.Show(this,“你点击了确定按钮。”,“提示信息”,MessageBoxButtons.OK,MessageBoxIcon.Information);,8.3 基本(jbn)控件,第五十七页,共181页。,参数的含义:,(1)object sender:代表发出事件的对象,,此处指button1。使用时可以直接用button1,也可,以像下面(xi mian)形式:,Button button=(Button)sender;,(2)System.EventArgs e:封装了事件的信息,第五十八页,共181页。,3.MouseEnter事件:鼠标进入按钮区域(qy)时触发。,例如:,private void button1_MouseEnter(object sender,System.EventArgs e),/颜色在System.Drawing名称空间下,4.MouseLeave事件:鼠标离开按钮区域(qy)时触发。,例如:,private void button1_MouseLeave(object sender,System.EventArgs e),第五十九页,共181页。,2 TextBox控件/RichTextBox控件,常用:,1Text属性:表示文本框中的当前文本。,例如:,2Multiline属性:表示是否可以(ky)包含多行内容。,3MaxLength属性:表示用户可以(ky)在文本框控件中最多键 入的字符数。,4 PasswordChar属性:用于屏蔽在单行文本框控件中输入的的密码字符。,5、TextChanged事件:更改Text属性值时触发。,例如:,private void textBox1_TextChanged(object sender,System.EventArgs e),第六十页,共181页。,第六十一页,共181页。,/标题为求积的按钮的单击事件处理函数(hnsh)如下:,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);,/标题为“清空”的按钮的单击事件处理函数(hnsh)如下:,private void button2_Click(object sender,EventArgs e),textBox1.Text=;,textBox2.Text=;,textBox3.Text=;,第六十二页,共181页。,6、KeyPress事件:输入时按键触发。一般用于监控(jin kn)键盘的输入字符,,可以用来限制键盘输入字符,如数字,可打印字符等。,private void textBox1_KeyPress(object sender,KeyPressEventArgs e),/限制键盘输入 只能(zh nn)输入数字和退格键,if(!(e.KeyChar=48&e.KeyChar=0)/将左列表框中选中项移到右列表框中,enbutton();/调用enbutton()方法(fngf),private void button2_Click(object sender,EventArgs e),foreach(object item in listBox1.Items)/将左列表框中所有项移到右列表框中,enbutton();/调用enbutton()方法(fngf),第八十六页,共181页。,private void button3_Click(object sender,EventArgs e),if(listBox2.SelectedIndex=0)/将右列表框中选中项移到左列表框中,enbutton();/调用(dioyng)enbutton()方法,private void button4_Click(object sender,EventArgs e),foreach(object item in listBox2.Items)/将右列表框中所有项移到左列表框中,enbutton();/调用(dioyng)enbutton()方法,第八十七页,共181页。,运行(ynxng)界面,第八十八页,共181页。,这种控件有两部分组成,即一个文本框和一个列表框。文本框可以用来显示当前选中的条目,如果文本框可以编辑,则可以直接输入(shr)选择的条目。单击文本框旁边带有向下箭头的按钮,则会弹出列表框,使用键盘或者鼠标可以在列表框中选择条目。,常用属性:,1 Text属性、Items属性、DropDownStyle属性。,其中DropDownStyle属性有:,Simple:同时显示文本框和列表框,文本框可以被编辑。,DropDown:只显示文本框,需要通过键盘或者鼠标打开列,表框,文本框可以被编辑。,DropDownList:只显示文本框,需要通过键盘或者鼠标打,开列表框,文本框不可以被编辑。,2 SelectedIndexChanged事件,选择项发生改变时触发该事件。,10,ComboBox,控件,第八十九页,共181页。,第一步:设计(shj)窗体。,例:,第九十页,共181页。,第二步:添加(tin ji)comboBox1的SelectedIndexChanged事件。,private void comboBox1_SelectedIndexChanged(object sender,System.EventArgs e),if(this boBox1.SelectedIndex-1&,this boBox2.SelectedIndex-1),第九十一页,共181页。,第三步:添加comboBox2的SelectedIndexChanged事件。,private void comboBox2_SelectedIndexChanged(object sender,System.EventArgs e),if(this boBox1.SelectedIndex-1&,this boBox2.SelectedIndex-1),第四步:运行,修改小组和项目(xingm)选项,观察ListBox中内容的变化。,第九十二页,共181页。,该控件的用途是当鼠标位于某个控件上并停留一段时间后,显示该控件功能的提示信息。,使用方法:向窗体拖放一个该控件,其它控件的属性里将添加一个ToolTip属性,键入(jin r)提示文本即可。,主要属性有:,Active:指示该控件当前是否处于激活状态。,AutomaticDelay:设置经过多长时间显示提示信息,缺省值为500ms。,AutoPopDelay:设置鼠标指针停留多长时间后消失提示信息。,运行,分别将鼠标在上述控件中停留一段时间,观察显示的提示信息。,11,ToolTip,控件,第九十三页,共181页。,MenuStrip 控件主要用于生成所在(suzi)窗体的主菜单。,用符号“&”指定该菜单项的组合键,让其后的字母带下划线显示,如编辑菜单项“E&xit”,则会显示为“Exit”,意思是可以直接用“Alt+x”组合键实现与单击该菜单项相同的功能;,用符号“-”可以在菜单中显示各项之间的分隔条。,12,MenuStrip,控件,举例说明:,(1)将MainMenu 组件从“工具箱”拖动到窗体上。,(2)在菜单设计器中,创建一个顶级菜单项,并将其 Text 属性设置为“文件(wnjin)(&F)”,然后依次创建4个子菜单,并将其 Text 属性分别设置为“新建(&New)”、“打开(&Open)”、“-”和“退出(&Exit)”。,第九十四页,共181页。,1、MenuStrip控件的基本属性(shxng),(1)AllowItemReorder属性(shxng):当程序运行时,按下键是否允许改变各菜单项的左右排列顺序。默认值为false,当更改该属性(shxng)值为true时,按下键的同时可以用鼠标拖动各菜单项以调整其在菜单栏上的左右位置。,(2)Dock属性(shxng):指示菜单栏在窗体中出现的位置,默认值为Top。,(3)GripStyle属性(shxng):是否显示菜单栏的指示符,即纵向排列的多个凹点,默认值为Hidden。当更改该属性(shxng)值为Visible时,显示位置由GripMargin属性(shxng)指定。,(4)Items属性(shxng):用于编辑菜单栏上显示的各菜单项。单击Items属性(shxng)后按钮,弹出项集合编辑器对话框,如图所示。,第九十五页,共181页。,第九十六页,共181页。,2、MenuItem菜单项的基本属性,(1)Checked属性:指示菜单项是否被选中。默认值为false。,(2)CheckOnClick属性:决定单击菜单项时是否使其选中状态发生改变。默认值为false,即单击菜单项不会影响其Checked属性:当更改该属性值为true时,则每次单击菜单项都会影响其Checked属性,使其值在false和true之间切换。,(3)CheckState属性:指示菜单项的状态。与复选框CheckBox控件的ThreeState属性相同,共有3个属性值:Checked、Unchecked和Indeterminate,分别表示选中、未选中和不确定3种状态。,(4)DisplayStyle属性:指示菜单项上的显示内容。共有4个属性值:None、Text、Image和ImageAndText,分别表示不显示任何内容、仅显示图标、同时显示文本和图标。默认值为ImageAndText。,(5)DropDownItems属性:单击该属性后的按钮,调出项集合(jh)编辑器对话框,以此编辑该菜单项对应得子菜单中的各菜单项。,第九十七页,共181页。,(6)Image属性:指定在该菜单项上显示的图标。,(7)ImageScaling属性:指定是否调整图标大小。默认属性值为SizeToFit,即调整图标大小以适应菜单项。该属性的另一个属性值为None,即不调整图标大小。,(8)ShortcutScaling属性:为菜单项指定的快捷键。单击该属性后的下拉按钮,出现如图所示的设置页面,用于设置菜单项的快捷组合键。设置时,可以选择、3个功能键的任意组合(注意键不能单独使用)作为修饰符;在键下拉列表框中选择快捷键,其中包括键盘可输入的任何字符。完成设置后即可使用说设置的快捷键调用(dioyng)菜单项的功能。该属性的默认值为None。,注意:ShortcutKeys属性所设置的快捷键与使用“&”设置的组合键,虽然都是通过设定的键盘操作完成与鼠标单击相同的功能,但是在本质上二者是不同的。“&”设置的组合键只有在菜单项可见的情况下才可使用,所以不能称之为快捷键;而ShortcutKeys属性所设置的快捷键无论菜单项是否可见都可以使用。,(9)ShowShortCutKeys属性:指示是否在菜单项上显示快捷键。默认值为true,即在菜单项上按照ShowShortCutKeys属性的设置显示快捷键。,第九十八页,共181页。,3、MenuStrip控件的常用(chn yn)属性,(1)ItemClicked事件:当单击菜单栏上各主菜单项时触发的操作。,(2)LayoutCompleted事件:当菜单栏上各主菜单项的排列顺序发生变化之后触发的操作。使用该事件时,AllowItemRecord属性必须设为true,即当程序运行时,按下Alt键重新排列菜单栏上各主菜单项的顺序之后触发该事件。,第九十九页,共181页。,4、MenuItem菜单项的常用事件,(1)Click事件:单击菜单项时触发。,(2)DropDownClosed事件:关闭菜单项的子菜单时触发的操作(cozu)。,(3)DropD
展开阅读全文