1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,Windows,窗体应用程序设计,8.1,窗体设计,8.2,常用的控件设计,8.3,多文档窗体,8.4,窗体设计的事件机制,1,窗体设计,窗体(,Form,)是一个窗口或对话框,是存放各种控件(包括标签、文本框、命令按钮等)的容器,可用来向用户显示信息。,8.1.1,创建,Windows,窗体应用程序的过程,添加一个窗体的操作步骤是:选择“项目”,|“,添加,Windows,窗体”菜单命令,在出现的“添加新项”对话框中,选中“,Windows,窗体”,输入相应的名称(这里为,Form2.cs,),单击“添加
2、按钮。,一个,Windows,应用程序可以包含多个窗体。,2,窗体类型,在,C#,中,窗体分为如下两种类型:,(,1,)普通窗体,也称为单文档,窗体,(,SDI,),前面所有创建的窗体均为普通窗体。普通窗体又分为如下两种:,模式窗体。这类窗体在屏幕上显示后用户必须响应,只有在它关闭后才能操作其他窗体或程序。,无模式窗体。这类窗体在屏幕上显示后用户可以不必响应,可以随意切换到其他窗体或程序进行操作。通常情况下,当建立新的窗体时,都默认设置为无模式窗体。,(,2,),MDI,父窗体,即多文档窗体,其中可以放置普通子窗体。,3,窗体的常用属性,1.,布局属性,2.,窗口样式属性,3.,外观样式属性
3、4.,行为属性,8.1.4,窗体的常用事件,8.1.5,窗体的常用方法,4,1.,Form1,窗体:,(,1,)设计界面,(,2,)事件过程:,Form1.cs,文件:,/,引用部分,using System;,using System.Collections.Generic;,using System.ComponentModel;,using System.Data;,using System.Drawing;,using System.Text;,using System.Windows.Forms;,5,namespace Proj8_1,public partial class F
4、orm1:Form,/,从,Form,类继承,Form1,窗体,public Form1()/Form1,类构造函数,InitializeComponent();,/,调用初始化方法,其代码在,Form1.Designer.cs,文件中,private void button1_Click(object sender,EventArgs e),Form myform=new Form1_1();/,定义,Form1_1,类对象,myform.,ShowDialog,();/,以,模式窗体,方式调用,private void button2_Click(object sender,EventAr
5、gs e),Form myform=new Form1_2();/,定义,Form1_2,类对象,myform.,Show,();/,以,无模式窗体,方式调用,6,Form1.Designer.cs,文件:,namespace Proj8_1,partial class Form1,/,/,必需的设计器变量。,/,private System.ComponentModel.IContainer components=null;,/,/,清理所有正在使用的资源。,/,/,如果应释放托管资源,为,true,;,/,否则为,false,。,protected override void Dispos
6、e(bool disposing),/,重写基类,Dispose(),方法,if(disposing&(components!=null),components.Dispose();,base.Dispose(disposing);/,调用基类的,Dispose(),方法,7,#region Windows,窗体设计器生成的代码,/,/,设计器支持所需的方法,-,不要,/,使用代码编辑器修改此方法的内容。,/,private void InitializeComponent()/,初始化方法,this.button1=new System.Windows.Forms.button();,thi
7、s.button2=new System.Windows.Forms.button();,this.SuspendLayout();,/button1,this.button1.Font=new System.Drawing.Font(,宋体,9F,System.Drawing.FontStyle.Bold,System.Drawing.GraphicsUnit.Point,(byte)(134);,this.button1.Location=new System.Drawing.Point(28,21);,this.button1.Name=button1;,this.button1.Siz
8、e=new System.Drawing.Size(117,33);,this.button1.TabIndex=0;,this.button1.Text=,调用模式窗体,;,this.button1.UseVisualStyleBackColor=true;,this.button1.Click+=new System.EventHandler(this.button1_Click);,8,/button2,this.button2.Font=new System.Drawing.Font(,宋体,9F,System.Drawing.FontStyle.Bold,System.Drawing
9、GraphicsUnit.Point,(byte)(134);,this.button2.Location=new System.Drawing.Point(28,69);,this.button2.Name=button2;,this.button2.Size=new System.Drawing.Size(117,33);,this.button2.TabIndex=1;,this.button2.Text=,调用无模式窗体,;,this.button2.UseVisualStyleBackColor=true;,this.button2.Click+=new System.EventH
10、andler(this.button2_Click);,/Form1,this.AutoScaleDimensions=new System.Drawing.SizeF(6F,12F);,this.AutoScaleMode=System.Windows.Forms.AutoScaleMode.Font;,this.ClientSize=new System.Drawing.Size(169,128);,this.Controls.Add(this.button2);,this.Controls.Add(this.button1);,this.Name=Form1;,this.StartPos
11、ition=System.Windows.Forms.FormStartPosition.CenterScreen;,this.Text=Form1;,this.ResumeLayout(false);,9,#endregion,private System.Windows.Forms.button button1;,/,私有字段,private System.Windows.Forms.button button2;/,私有字段,10,2.,Form1_1,窗体:,(,1,)设计界面,(,2,)事件过程:无,3.,Form1_1,窗体:,(,1,)设计界面,(,2,)事件过程:无,11,Pr
12、ogram.cs,文件,:,using System;,using System.Collections.Generic;,using System.Windows.Forms;,namespace Proj8_1,static class Program,/,/,应用程序的主入口点。,/,STAThread,static void Main(),Application.EnableVisualStyles();,Application.SetCompatibleTextRenderingDefault(false);,Application.Run(new Form1();,/,启动窗体为,
13、Form1,12,按,F5,键或单击工具栏中的按钮运行本项目。,上机调试运行结果。,13,窗体上各事件的引发顺序,当一个窗体启动时,执行事件过程的次序如下:,(,1,)本窗体上的,Load,事件过程。,(,2,)本窗体上的,Activated,事件过程。,(,3,)本窗体上的其他,Form,级事件过程。,(,4,)本窗体上包含对象的相应事件过程。,一个窗体被卸载时,执行事件过程的次序如下:,(,1,)本窗体上的,Closing,事件过程。,(,2,)本窗体上的,FormClosing,事件过程。,(,3,)本窗体上的,Closed,事件过程。,(,4,)本窗体上的,FormClosed,事件过
14、程。,14,焦点与,Tab,键次序,焦点(,Focus,)是指当前处于活动状态的窗体或控件。,要将焦点移到当前窗体中的,textBox1,文本框,可以使用以下命令:,textBox1.Focus();,15,控件概述,控件是包含在窗体上的对象,是构成用户界面的基本元素,也是,C#,可视化,编程的重要工具。,工具箱中包含了建立应用程序的各种控件,根据控件的不同用途分为若干个选项卡,可根据用途单击相应的选项卡,将其展开,选择需要的控件。,常用的控件设计,16,大多数控件共有的基本属性如下,:,1,),Name,属性,2,),Text,属性,3,)尺寸大小(,Size,)和位置(,Location,
15、属性,4,)字体属性(,Font,),5,)颜色属性(,BackColor,和,ForeColor,),6,),Cursor,属性,7,)可见(,Visible,)和有效(,Enabled,)属性,17,富文本框控件,提供类似,Microsoft Word,能够输入、显示或处理具有格式的文本。,【,例,8.2】,设计一个窗体,说明富文本框的使用方法。,Form2,窗体:,(,1,)设计界面,(,2,)事件过程:,private void Form2_Load(object sender,EventArgs e),richtextBox1.LoadFile(H:C#2005ch8file.RT
16、F,RichtextBoxStreamType.RichText);,H:C#2005ch8file.RTF,18,将本窗体设计为启动窗体,运行本项目,在富文本框,RichtextBox1,中显示,H:C#2005ch8file.rtf,文件的内容。,19,分组框控件,面板控件,20,复选框控件,属于选择类控件,用来设置需要或不需要某一选项功能。在运行时,如果用户用鼠标单击复选框左边的方框,方框中就会出现一个“”符号,表示已选取这个功能了。,复选框的功能是独立的,如果在同一窗体上有多个复选框,用户可根据需要选取一个或几个。,主要属性:,Checked,:获取或设置一个布尔值,该值指示是否已选中
17、控件。如果为,True,,则指示选中状态;否则为,False,(默认值)。,主要事件:,Click,21,【,例,8.3】,设计一个窗体,说明复选框的应用。,Form3,窗体:,(,1,)设计界面,(,2,)事件过程:,private void button1_Click(object sender,EventArgs e),if(checkBox1.Checked&checkBox3.Checked&,!checkBox2.Checked&!checkBox4.Checked),MessageBox.Show(,您答对了,真的很棒,!,信息提示,MessageBoxButtons.OK);,
18、else,MessageBox.Show(,您答错了,继续努力吧,!,信息提示,MessageBoxButtons.OK);,22,运行界面,23,单选按钮控件,单选按钮是多选一,只能从多个选项中选择一个,各选项间的关系是互斥的。,单选按钮使用时经常用多个控件构成一个组,同一时刻只能选择同一组中的一个单选按钮,因此,经常将单选按钮放在一个分组框中构成一个选项组。,24,设计一个窗体,说明单选按钮的使用方法。,Form4,窗体:,(,1,)设计界面,(,2,)事件过程:,private void button1_Click(object sender,EventArgs e),if(radiob
19、utton3.Checked),MessageBox.Show(,您选对了,这是微软公司开发的操作系统,信息提示,MessageBoxButtons.OK);,else if(radiobutton1.Checked|radiobutton4.Checked),MessageBox.Show(,您选错了,这是程序设计语言,信息提示,MessageBoxButtons.OK);,else,MessageBox.Show(,您选错了,这是数据库管理系统,信息提示,MessageBoxButtons.OK);,25,运行界面,26,图片框控件,用于在窗体的特殊位置上放置图形信息,也可以在其上放置多个
20、控件,因此它可作为其他控件的容器。,主要属性:,Image,获取或设置图片框中显示的图像。在运行时再使用,Image.FromFile,函数加载图像。,27,设计一个窗体,以选择命令按钮方式显示春、夏、秋、冬,4,个季节的图片。,Form5,窗体:,(,1,)设计界面,(,2,)事件过程:,private void button1_Click(object sender,EventArgs e),pictureBox1.Image=Image.FromFile(H:C#2005ch8spring.jpg);,private void button2_Click(object sender,Ev
21、entArgs e),pictureBox1.Image=Image.FromFile(H:C#2005ch8summer.jpg);,private void button3_Click(object sender,EventArgs e),pictureBox1.Image=Image.FromFile(H:C#2005ch8fall.jpg);,private void button4_Click(object sender,EventArgs e),pictureBox1.Image=Image.FromFile(H:C#2005ch8winter.jpg);,28,29,组合框控件,
22、从一个列表中一次只能选取或输入一个选项,其主要特点是具有带向下箭头的方框。,在程序运行时,按下此按钮就会下拉出一个列表框供用户选择项目。另外,还可以在组合框上方的框中输入数据。,组合框的属性,说明,DropDownStyle,获取或设置指定组合框样式的值。可取以下值之一:,DropDown,(默认值):文本部分可编辑。用户必须单击箭头按钮来显示列表部分。,DropDownList,:用户不能直接编辑文本部分。用户必须单击箭头按钮来显示列表部分。,Simple,:文本部分可编辑。列表部分总可见。,各种样式的组合框如图,8.19,所示。,DropDownWidth,获取或设置组合框下拉部分的宽度(
23、以像素为单位)。,DropDownHeight,获取或设置组合框下拉部分的高度(以像素为单位)。,Items,表示该组合框中所包含项的集合。,SelectedItem,获取或设置当前组合框中选定项的索引。,SelectedText,获取或设置当前组合框中选定项的文本。,Sorted,指示是否对组合框中的项进行排序。,30,DropDownStyle=Simple,DropDownStyle=DropDown,DropDownStyle=DropDownList,31,组合框的,Items,属性是最重要的属性,它是存放组合框中所有项的集合,对组合框的操作实际上就是对该属性即项集合的操作。,Ite
24、ms,的属性,说明,Count,组合框的项集合中项个数。,Items,的方法,说明,Add,向,ComboBox,项集合中添加一个项。,AddRange,向,ComboBox,项集合中添加一个项的数组。,Clear,移除,ComboBox,项集合中的所有项。,Contains,确定指定项是否在,ComboBox,项集合中。,Equqls,判断是否等于当前对象。,GetType,获取当前实例的,Type,。,Insert,将一个项插入到,ComboBox,项集合中指定的索引处。,IndexOf,检索指定的项在,ComboBox,项集合中的索引。,Remove,从,ComboBox,项集合中移除指
25、定的项。,RemoveAt,移除,ComboBox,项集合中指定索引处的项,32,组合框的事件,组合框的事件,说明,Click,在单击控件时发生。,TextChanged,在,Text,属性值更改时发生。,SelectedIndexChanged,在,SelectedIndex,属性值改变时发生。,KeyPress,在控件有焦点的情况下按下键时发生。,33,设计一个窗体,通过一个文本框向合框中添加项。,Form6,窗体:,(,1,)设计界面,(,2,)事件过程:,private void button1_Click(object sender,EventArgs e),if(textBox1.
26、Text!=),if(!comboBox1.Items.Contains(textBox1.Text),comboBox1.Items.Add(textBox1.Text);/,不添加重复项,34,运行界面,35,列表框控件,是一个为用户提供选择的列表,用户可从列表框列出的一组选项中用鼠标选取一个或多个所需的选项。,如果有较多的选择项,超出规定的区域而不能一次全部显示时,,C#,会自动加上滚动条。,与组合框类似。,36,列表框的属性,说明,MultiColumn,获取或设置列表框控件是否支持多列。设置为,True,,则支持多列,设置为,False,(默认值),则不支持多列,SelectedIn
27、dex,获取或设置列表框控件中当前选定项从,0,开始的索引。,SelectedIndices,获取一个集合,它包含所有当前选定项的从,0,开始的索引。,SelectedItem,获取或设置列表框控件中当前选定项。,SelectedItems,获取一个集合,它包含所有当前选定项。,Items,获取列表控件项的集合。,SelectionMode,获取或设置列表框控件的选择模式。可选以下值之一:,one,:表示只能选择一项。,none,:表示无法选择。,MultiSimple,:表示可以选择多项。,MultiExtended,:表示可以选择多项。并且按下,Shift,键的同时单击鼠标或者同时按下,S
28、hift,键和箭头键,会将选定内容从前一选定项扩展到当前项,按下,Ctrl,键的同时单击鼠标将选择或撤销选择列表中的某项。,Text,当前选取的选项文本。,37,设计一个窗体,其功能是在两个列表框中移动数据项。,Form7,窗体:,(,1,)设计界面,(,2,)事件过程:,private void Form7_Load(object sender,EventArgs e),listBox1.Items.Add(,清华大学,);,listBox1.Items.Add(,北京大学,);,listBox1.Items.Add(,浙江大学,);,listBox1.Items.Add(,南京大学,);,
29、listBox1.Items.Add(,武汉大学,);,listBox1.Items.Add(,中国科技大学,);,listBox1.Items.Add(,中国人民大学,);,listBox1.Items.Add(,华中科技大学,);,listBox1.Items.Add(,复旦大学,);,enbutton();/,调用,enbutton(),方法,38,private void enbutton()/,自定义方法,if(listBox1.Items.Count=0)/,当左列表框为空时右移命令按钮不可用,button1.Enabled=false;,button2.Enabled=false
30、else/,当左列表框不为空时右移命令按钮可用,button1.Enabled=true;,button2.Enabled=true;,if(listBox2.Items.Count=0)/,当右列表框为空时左移命令按钮不可用,button3.Enabled=false;,button4.Enabled=false;,else/,当右列表框不为空时左移命令按钮可用,button3.Enabled=true;,button4.Enabled=true;,39,private void button1_Click(object sender,EventArgs e),if(listBox1.S
31、electedIndex=0)/,将左列表框中选中项移到右列表框中,listBox2.Items.Add(listBox1.SelectedItem);,listBox1.Items.RemoveAt(listBox1.SelectedIndex);,enbutton();/,调用,enbutton(),方法,private void button2_Click(object sender,EventArgs e),foreach(object item in listBox1.Items)/,将左列表框中所有项移到右列表框中,listBox2.Items.Add(item);,listBox
32、1.Items.Clear();,enbutton();/,调用,enbutton(),方法,40,private void button3_Click(object sender,EventArgs e),if(listBox2.SelectedIndex=0)/,将右列表框中选中项移到左列表框中,listBox1.Items.Add(listBox2.SelectedItem);,listBox2.Items.RemoveAt(listBox2.SelectedIndex);,enbutton();/,调用,enbutton(),方法,private void button4_Click(
33、object sender,EventArgs e),foreach(object item in listBox2.Items)/,将右列表框中所有项移到左列表框中,listBox1.Items.Add(item);,listBox2.Items.Clear();,enbutton();/,调用,enbutton(),方法,41,运行界面,42,带复选框的列表框控件,用来显示一系列列表项的,不过每个列表项前面都有一个复选项。这样,是否选中了某个列表项就可以很清楚地表现出来。,43,定时器控件,特点是每隔一定的时间间隔就会自动运行一次定时器事件。所谓时间间隔,指的是定时器事件两次调用之间的时间
34、间隔,一般以毫秒(,ms,)为基本单位。,定时器的属性,说明,Enabled,设置是否起用定时器控件。若设置为,True,(默认值),表示启动定时器开始计时;否则,表示暂停定时器的使用。,Interval,设置两个定时器事件之间的时间间隔。设置时以毫秒为单位,设置的范围是,0,65535ms,。,定时器的方法,说明,Start,启动定时器,也可以将,Enabled,属性设置为,True,来启动定时器。,Stop,停止定时器,也可以将,Enabled,属性设置为,False,来停止定时器。,44,设计一个窗体说明定时器的使用方法。,Form9,窗体:,(,1,)设计界面,(,2,)事件过程:,p
35、rivate void Form9_Load(object sender,EventArgs e),textBox1.Text=DateTime.Now.ToString(h:mm:ss);,timer1.Enabled=true;/,启到定时器,timer1,timer1.Interval=100;,private void timer1_Tick(object sender,EventArgs e),textBox1.Text=DateTime.Now.ToString(h:mm:ss);,45,运行界面,46,滚动条控件,滚动条的结构为两端各有一个滚动箭头,两个滚动箭头中间是滚动条部分,
36、在滚动条上有一个能够移动的小方块,叫做滚动框。,水平滚动条和垂直滚动条,47,滚动条的属性,说明,Maximum,表示滚动条的最大值。,Minimum,表示滚动条的最小值。,Value,表示目前滚动条所在位置对应的值。,LargeChange,设置滚动条的最大变动值。,SmallChange,设置滚动条的最小变动值。,滚动条的事件,说明,Scroll,当用鼠标压住滚动条上的滑块进行移动时,滑块被重新定位时发生。,Change,当改变,Value,属性值时发生。,48,设计一个窗体说明滚动条的使用方法。,Form10,窗体:,(,1,)设计界面,(,2,)事件过程:,private void F
37、orm10_Load(object sender,EventArgs e),hScrollBar1.Maximum=100;,hScrollBar1.Minimum=0;,hScrollBar1.SmallChange=2;,hScrollBar1.LargeChange=5;,vScrollBar1.Maximum=100;,vScrollBar1.Minimum=0;,vScrollBar1.SmallChange=2;,vScrollBar1.LargeChange=5;,hScrollBar1.Value=0;,vScrollBar1.Value=0;,textBox1.Text=0;
38、49,private void hScrollBar1_Scroll(object sender,ScrollEventArgs e),textBox1.Text=hScrollBar1.Value.ToString(d);,/,将,hScrollBar1.Value,整数将实际宽度转换成字符串在,textBox1,中显示,vScrollBar1.Value=hScrollBar1.Value;,private void vScrollBar1_Scroll(object sender,ScrollEventArgs e),textBox1.Text=vScrollBar1.Value.To
39、String(d);,hScrollBar1.Value=vScrollBar1.Value;,50,private void button1_Click(object sender,EventArgs e),if(Convert.ToInt16(textBox1.Text)=0,&Convert.ToInt16(textBox1.Text)=100),hScrollBar1.Value=Convert.ToInt16(textBox1.Text);,vScrollBar1.Value=Convert.ToInt16(textBox1.Text);,运行界面,51,月历控件,日期,/,时间控件
40、超链接标签控件,52,多文档窗体,多文档界面应用程序由一个应用程序(,MDI,父窗体)中包含多个文档(,MDI,子窗体)组成,父窗体作为子窗体的容器,子窗体显示各自文档,它们具有不同的功能。处于活动状态的子窗体的最大数目是,1,,子窗体本身不能成为父窗体,而且不能将其移动到父窗体的区域之外。,多文档界面应用程序有如下特性:,(,1,)所有子窗体均显示在,MDI,窗体的工作区内,用户可改变、移动子窗体的大小,但被限制在,MDI,窗体中。,(,2,)当最小化子窗体时,它的图标将显示在,MDI,窗体上而不是在任务栏中。,(,3,)当最大化子窗体时,它的标题与,MDI,窗体的标题一起显示在,MDI,
41、窗体的标题栏上。,(,4,),MDI,窗体和子窗体都可以有各自的菜单,当子窗体加载时覆盖,MDI,窗体的菜单。,53,MDI,父窗体属性,说明,ActiveMdiChild,表示当前活动的,MDI,子窗口,如没有子窗口则返回,NULL,IsMdiContainer,指示窗体是否为,MDI,父窗体,值为,True,时表示是父窗体,值为,False,时表示是普通窗体,MdiChildren,以窗体数组形式返回所有,MDI,子窗体,54,MDI,父窗体的方法,一般只使用父窗体的,LayoutMdi,方法,其使用格式为:,MDI,父窗体名,.LayoutMdi(value),其功能是在,MDI,父窗体
42、中排列,MDI,子窗体,参数,value,决定排列方式,有以下,4,种取值:,LayoutMdi.ArrangeIcons,:所有,MDI,子窗体以图标形式排列在,MDI,父窗体中。,LayoutMdi.TileHorizontal,:所有,MDI,子窗体均垂直平铺在,MDI,父窗体中。,LayoutMdi.TileVertical,:所有,MDI,子窗体均水平平铺在,MDI,父窗体中。,LayoutMdi.Cascade,:所有,MDI,子窗体均层叠在,MDI,父窗体中。,55,MDI,子窗体属性,说明,IsMdiChild,指示窗体是否为,MDI,子窗体,值为,True,时表示是子窗体,值
43、为,False,时表示是一般窗体,MdiParent,用来指定该子窗体的,MDI,父窗体,56,【,例,8.13】,设计一个,Windows,应用程序,说明多文档窗体的使用方法。,Form1,窗体,将其,IsMdiContainer,属性设为,True,:,设计界面,57,事件过程:,private void button1_Click(object sender,EventArgs e),Form2 child=new Form2();,child.MdiParent=this;,child.Show();,n+;,child.Text=,第,+n+,个子窗体,;,private void
44、button2_Click(object sender,EventArgs e),this.LayoutMdi(System.Windows.Forms.,MdiLayout.ArrangeIcons);,private void button3_Click(object sender,EventArgs e),this.LayoutMdi(System.Windows.Forms.,MdiLayout.Cascade);,private void button4_Click(object sender,EventArgs e),this.LayoutMdi(System.Windows.Fo
45、rms.,MdiLayout.TileVertical);,58,private void button5_Click(object sender,EventArgs e),this.LayoutMdi(System.Windows.Forms.,MdiLayout.TileHorizontal);,运行界面,59,窗体设计的事件机制,什么是事件处理程序,事件处理程序是代码中的过程,用于确定事件(如用户单击按钮或消息队列收到消息)发生时要执行的操作。,事件处理程序是绑定到事件的方法。当引发事件时,将执行收到该事件的一个或多个事件处理程序。,每个事件处理程序提供两个参数。例如,窗体中一个命令按钮
46、button1,的,Click,事件的事件处理程序如下:,60,其中,第一个参数,sender,提供对引发事件的对象的引用,第二个参数,e,传递特定于要处理的事件的对象。通过引用对象的属性(有时引用其方法)可获得一些信息,如鼠标事件中鼠标的位置或拖放事件中传输的数据。,创建事件处理程序有以下两种方法:,(,1,)在,Windows,窗体中创建事件处理程序。,(,2,)在运行时为,Windows,窗体创建事件处理程序。,private void button1_Click(object sender,System.EventArgs e),/,输入相应的代码,61,在,Windows,窗体中创
47、建事件处理程序,在,Windows,窗体设计器上创建事件处理程序的过程如下:,(,1,)单击要为其创建事件处理程序的窗体或控件。,(,2,)在属性窗口中单击“事件”按钮。,(,3,)在可用事件的列表中,单击要为其创建事件处理程序的事件。,(,4,)在事件名称右侧的框中,键入处理程序的名称,然后按,Enter,键。如图,8.40,所示是为,button1,命令按钮选择,button1_Click,事件处理程序,这样,C#,系统会在对应窗体的,.Designer.cs,文件中自动添加以下语句:,this.button1.Click+=new System.EventHandler(this.but
48、ton1_Click);,该语句的功能是订阅事件(参见第,6,章),即接收器使用加法赋值运算符,(+=),将该委托,System.EventHandler(this.button1_Click),添加到源对象,button1,的事件中。,(,5,)将适当的代码添加到该事件处理程序中。,62,在运行时为,Windows,窗体创建事件处理程序,在运行时创建事件处理程序的过程如下:,(,1,)在代码编辑器中打开要向其添加事件处理程序的窗体。,(,2,)对于要处理的事件,将带有其方法签名的方法添加到窗体上。,例如,如果要处理命令按钮,button1,的,Click,事件,则需创建如下的一个方法:,pr
49、ivate void button1_Click(object sender,System.EventArgs e),/,输入相应的代码,63,(,3,)将适合应用程序的代码添加到事件处理程序中。,(,4,)确定要创建事件处理程序的窗体或控件。,(,5,)打开对应窗体的,.Designer.cs,文件,添加指定事件处理程序的代码处理事件。例如,以下代码指定事件处理程序,button1_Click,处理命令按钮控件的,Click,事件:,button1.Click+=new System.EventHandler(button1_Click);,64,将多个事件连接到,Windows,窗体中的单
50、个事件处理程序,在应用程序设计中,可能需要将单个事件处理程序用于多个事件或让多个事件执行同一过程,这样便于简化代码。在,C#,中将多个事件连接到单个事件处理程序的过程如下:,(,1,)选择要将事件处理程序连接到的控件。,(,2,)在“属性”窗口中,单击“事件”按钮。,(,3,)单击要处理的事件的名称。,(,4,)在事件名称旁边的值区域中,单击下拉按钮显示现有事件处理程序列表,这些事件处理程序会与要处理的事件的方法签名相匹配。,(,5,)从该列表中选择适当的事件处理程序。,代码将添加到该窗体中,以便将该事件绑定到现有事件处理程序。,65,【,例,8.14】,设计一个,Windows,应用程序,用
©2010-2025 宁波自信网络信息技术有限公司 版权所有
客服电话:4009-655-100 投诉/维权电话:18658249818