1、 14.1 Windows Forms程序概述程序概述 14.2 Windows Forms项目概述项目概述 14.3 管理管理Windows Forms项目项目 14.4 创建简单的创建简单的Windows应用程序应用程序 14.5 小结小结14.1 Windows Forms程序概述Windows Forms,指能够在,指能够在Microsoft操作系统操作系统平台上运行的,有着友好界面外观(如窗体、菜平台上运行的,有着友好界面外观(如窗体、菜单、控件等)的程序。单、控件等)的程序。启动程序启动程序 Windows Forms窗体应用程序与控制台应用程序有窗体应用程序与控制台应用程序有很大
2、的不同,但是程序的入口是相同的,均为很大的不同,但是程序的入口是相同的,均为Main函函数。在数。在Windows Forms应用程序中,应用程序中,Main函数也是函数也是应用程序中要执行的第一个函数。应用程序中要执行的第一个函数。下列代码是下列代码是C#中一个非常简单的启动中一个非常简单的启动Windows程序的程序的例子。例子。static public void Main()Application.Run(new Form1();14.1 Windows Forms程序概述窗体:窗体:Windows操作系统最主要的成功源于其友操作系统最主要的成功源于其友好的外观,即窗体。在好的外观,即
3、窗体。在Windows Forms应用程应用程序中创建窗体需使用序中创建窗体需使用System.Windows.Forms.Form类或其派生类创类或其派生类创建一个建一个Forms对象。对象。事件:每一个事件:每一个Windows控件都拥有大量的事件,控件都拥有大量的事件,使其可以达到与用户交互的目的。事件的监视及使其可以达到与用户交互的目的。事件的监视及管理由前面所介绍的管理由前面所介绍的Application类负责。开发人类负责。开发人员就是通过编写事件的响应方法,即事件所引发员就是通过编写事件的响应方法,即事件所引发的操作,来达到对程序进行控制及交互的目的。的操作,来达到对程序进行控制
4、及交互的目的。14.1 Windows Forms程序概述事件响应的方法事件响应的方法:在:在.NET中,事件的声明是通过中,事件的声明是通过event(事件)关键字来声明的。事件的响应及(事件)关键字来声明的。事件的响应及处理是通过一个处理是通过一个delegate(委托)来处理的。(委托)来处理的。如果想为一个事件添加多个相应方法,可以使用如果想为一个事件添加多个相应方法,可以使用“+=”(加等于)操作符;同时,还可以通过非(加等于)操作符;同时,还可以通过非常简单的常简单的“-=”(减等于)操作符取消这些响应(减等于)操作符取消这些响应方法。方法。示例:示例:button1.Click+
5、=new System.EventHandler(MyMethod);void MyMethod(object sender,System.EventArgs e);14.2.1 新建Windows Forms项目当创建当创建Windows Forms新项目时,就相当于新新项目时,就相当于新建了一个工程。建了一个工程。步骤:步骤:启动启动Microsoft Visual Studio 2008 在菜单栏中单击在菜单栏中单击【文件文件】|【新建新建】|【项目项目】命令,弹命令,弹出出【新建项目新建项目】窗口窗口,在,在【新建项目新建项目】窗口中,可以窗口中,可以选择选择“项目类型项目类型”,在,
6、在【名称名称】文本框中可以输入项文本框中可以输入项目名称,在目名称,在【位置位置】文本框中输入项目保存的位置,文本框中输入项目保存的位置,也可以单击也可以单击【浏览浏览】按钮查找要保存的位置。按钮查找要保存的位置。单击单击【确定确定】按钮就创建了一个按钮就创建了一个Windows Forms项目,项目,在窗体设计器中显示一个默认窗体在窗体设计器中显示一个默认窗体Form1。在菜单栏中单击在菜单栏中单击【文件文件】|【全部保存全部保存】命令,即可保命令,即可保存项目。存项目。14.2.1 新建Windows Forms项目项目保存路径下的各文件夹及文件说明如下:项目保存路径下的各文件夹及文件说明
7、如下:bin文件夹:包含文件夹:包含debug子目录及子目录及WindowsApplication1.exe文件和文件和WindowsApplication1.pdb文件。文件。.exe文件为生成的可文件为生成的可执行文件,执行文件,.pdb文件包含完整的调试信息。文件包含完整的调试信息。obj文件夹:包含文件夹:包含debug子目录,含有编译过程中生成的中间代子目录,含有编译过程中生成的中间代码。码。Properties文件夹:包含文件夹:包含AssemblyInfo.cs文件,它是在创建文件,它是在创建项目过程中自动添加的。此文件包含程序集属性的设置。项目过程中自动添加的。此文件包含程序集
8、属性的设置。Resources文件夹:包含项目所需的资源文件。文件夹:包含项目所需的资源文件。Program.cs文件:应用程序文件,包含应用程序代码。文件:应用程序文件,包含应用程序代码。Form1.cs:窗体文件,包含窗体代码。:窗体文件,包含窗体代码。Form1.Designer.cs:与窗体及控件有关的代码。:与窗体及控件有关的代码。Form1.resx:Windows窗体资源编辑器生成的资源文件。窗体资源编辑器生成的资源文件。WindowsApplication1.csproj:项目文件。:项目文件。WindowsApplication1.sln:解决方案文件。:解决方案文件。14.
9、2.2 打开已有的Windows Forms项目步骤:步骤:启动启动Microsoft Visual Studio 2008。在菜单栏中单击在菜单栏中单击【文件文件】|【打开打开】|【项目项目/解决方案解决方案】命令,弹出命令,弹出【打开项目打开项目】窗口,选择要打开的项目的窗口,选择要打开的项目的文件(扩展名为文件(扩展名为.sln)。单击单击【打开打开】按钮后,就打开了一个已有的按钮后,就打开了一个已有的Windows Forms项目项目 14.3 管理Windows Forms项目14.3.1 向项目添加窗体步骤:步骤:在解决方案资源管理器中,右击项目名称,在在解决方案资源管理器中,右击
10、项目名称,在右键快捷菜单中单击右键快捷菜单中单击【添加添加】|【Windows窗窗体体】命令,或者在菜单栏中单击命令,或者在菜单栏中单击【项目项目】|【添添加加Windows窗体窗体】命令,均可弹出命令,均可弹出【添加新项添加新项】窗口。窗口。在该窗口的在该窗口的【模板模板】列表框中选择列表框中选择“Windows窗体窗体”,在,在【名称名称】文本框中输入窗体的名字,文本框中输入窗体的名字,默认为默认为Form2、Form3等。单击等。单击【添加添加】按钮,按钮,即可向项目中添加一个窗体。即可向项目中添加一个窗体。14.3.2 修改窗体属性当一个当一个Windows Forms项目被创建,系统
11、项目被创建,系统会为窗体设置默认属性。如果要修改窗体会为窗体设置默认属性。如果要修改窗体的属性,一般有如下两种方法。的属性,一般有如下两种方法。通过通过【属性属性】窗口修改窗体的属性。窗口修改窗体的属性。在程序代码中通过修改代码修改窗体的属性。在程序代码中通过修改代码修改窗体的属性。大部分属性既可以通过大部分属性既可以通过【属性属性】窗口修改,窗口修改,又可以通过代码修改,而有些属性只能在又可以通过代码修改,而有些属性只能在程序中通过修改代码来修改。程序中通过修改代码来修改。14.3.2 修改窗体属性 打开打开【属性属性】窗口的方法有很多,既可以窗口的方法有很多,既可以通过在菜单栏中单击通过在
12、菜单栏中单击【视图视图】|【属性属性】命令,也可以先选中窗体并右击,在右键命令,也可以先选中窗体并右击,在右键快捷菜单中单击快捷菜单中单击【属性属性】命令,还可以通命令,还可以通过快捷键过快捷键【Ctrl】+【W】+【P】。14.3.3 窗体常见的属性、方法和事件 窗体属性:标题栏、窗体名称、窗体大小、窗体属性:标题栏、窗体名称、窗体大小、颜色、边框、显示位置、背景图片和起始颜色、边框、显示位置、背景图片和起始位置位置。标题栏标题栏:由窗体的:由窗体的Text属性决定,默认属性决定,默认的标题为的标题为Form1、Form2、Form3等等。窗体名称:窗体名称:Name属性,该属性用于在代属性
13、,该属性用于在代码中标识对象的名称码中标识对象的名称。由于。由于Name属性要属性要在代码中使用,在代码中使用,Name属性只能在属性只能在【属性属性】窗口中被修改,在代码中不能修改。窗口中被修改,在代码中不能修改。14.3.3 窗体常见的属性、方法和事件窗体的大小由窗体的大小由Size属性决定。属性决定。窗体的背景色由窗体的背景色由BackColor属性决定属性决定。窗体边框由窗体边框由FormBorderStyle属性决定。属性决定。窗体的显示位置由窗体的显示位置由Location属性决定。属性决定。窗体的背景图片由窗体的背景图片由BackgroundImage属性决属性决定定。窗体的起始
14、位置,即窗体初始出现时所在的位窗体的起始位置,即窗体初始出现时所在的位置置,由,由StartPosition属性决定。属性决定。其他属性:其他属性:Enabled、ControlBox、MaximizeBox、MinimizeBox、Visible、Icon、Cursor、WindowState。14.3.3 窗体常见的属性、方法和事件窗体方法:窗体方法:Show方法和方法和Hide方法:用于显示窗体或隐方法:用于显示窗体或隐藏窗体,其语法形式分别如下:藏窗体,其语法形式分别如下:窗体名窗体名.Show()窗体名窗体名.Hide()Close方法:用于关闭窗体,其语法形式如方法:用于关闭窗体,
15、其语法形式如下:下:窗体名窗体名.Close()Focus方法:用于激活窗体并给予其焦点,方法:用于激活窗体并给予其焦点,其语法形式如下:其语法形式如下:Public bool Focus()14.3.3 窗体常见的属性、方法和事件SetBounds方法:用于设置窗体的位置和大小,方法:用于设置窗体的位置和大小,其语法形式如下:其语法形式如下:Public void SetBounds(int x,int y,int width,int height)SetDesktopLocation方法:以桌面坐标设置窗方法:以桌面坐标设置窗体的位置。其语法形式如下:体的位置。其语法形式如下:Public
16、 void SetDesktopLocation(int x,int y)SetDesktopBounds方法:以桌面坐标设置窗体方法:以桌面坐标设置窗体的边界,可以使用此方法设置桌面上窗体的位置的边界,可以使用此方法设置桌面上窗体的位置和大小,可确保窗体在桌面上完全可见,其语法和大小,可确保窗体在桌面上完全可见,其语法形式如下:形式如下:Public void SetDesktopBounds(int x,int y,int width,int height)14.3.3 窗体常见的属性、方法和事件窗体事件的一般语法形式如下。窗体事件的一般语法形式如下。Private void 窗体名窗体名
17、_-事件名事件名(object sender,EventArgs e)事件响应代码事件响应代码其中,参数其中,参数sender为事件发出者;为事件发出者;e为事件的附加数据,为事件的附加数据,事件不同,事件不同,e也不同。也不同。Load事件:加载窗体时被引发。它在窗体显示之事件:加载窗体时被引发。它在窗体显示之前被执行,通常进行一些初始化的工作,是比较前被执行,通常进行一些初始化的工作,是比较常用的事件。常用的事件。Activated事件:窗体获得焦点(被激活)时被引事件:窗体获得焦点(被激活)时被引发。可以使用此事件处理一些窗体被激活时需要发。可以使用此事件处理一些窗体被激活时需要更新的内
18、容。更新的内容。14.3.3 窗体常见的属性、方法和事件Deactivate事件:窗体失去焦点时被引发。事件:窗体失去焦点时被引发。FormClosing事件:在关闭窗体时发生。事件:在关闭窗体时发生。如果此时不想关闭窗体,可以将传递给事如果此时不想关闭窗体,可以将传递给事件处理程序的件处理程序的FormClosingEventArgs参参数的数的Cancel属性设置为属性设置为true。FormClosed事件:关闭窗体后发生。可以事件:关闭窗体后发生。可以使用此事件执行一些诸如释放窗体占用的使用此事件执行一些诸如释放窗体占用的内存资源、保存输入窗体中的信息或更新内存资源、保存输入窗体中的信
19、息或更新其父窗体的任务。其父窗体的任务。14.3.4 继承已有窗体的方式 与派生类继承基类类似,窗体也能够继承与派生类继承基类类似,窗体也能够继承父窗体的设置、属性和控件布局等。也就父窗体的设置、属性和控件布局等。也就是说,可以创建有标准属性的窗体作为基是说,可以创建有标准属性的窗体作为基窗体,并基于此基窗体派生其他子窗体或窗体,并基于此基窗体派生其他子窗体或继承窗体。继承窗体。创建继承窗体的方法有两种,一种是通过创建继承窗体的方法有两种,一种是通过编程方式创建继承窗体;另一种是使用继编程方式创建继承窗体;另一种是使用继承选择器创建继承窗体。承选择器创建继承窗体。14.3.4 继承已有窗体的方
20、式 通过编程方式创建继承窗体通过编程方式创建继承窗体 以编程方式创建继承窗体时,主要是在类以编程方式创建继承窗体时,主要是在类定义中将引用添加到要从其继承的窗体。定义中将引用添加到要从其继承的窗体。引用应包含基窗体的命名空间,然后是基引用应包含基窗体的命名空间,然后是基窗体本身的名称,其语法形式如下。窗体本身的名称,其语法形式如下。class 继承窗体名称继承窗体名称:基窗体所在命名空间名称基窗体所在命名空间名称.基窗体名称基窗体名称14.3.4 继承已有窗体的方式使用继承选择器创建继承窗体使用继承选择器创建继承窗体 通过继承选择器,可利用已经在其他解决方案中通过继承选择器,可利用已经在其他解
21、决方案中创建的代码或用户界面。为了使用继承选择器,创建的代码或用户界面。为了使用继承选择器,包含该基窗体的项目必须已生成为可执行文件或包含该基窗体的项目必须已生成为可执行文件或DLL。若要生成可执行文件,可以在菜单栏中单。若要生成可执行文件,可以在菜单栏中单击击【生成生成】|【生成解决方案生成解决方案】命令。命令。在解决方案资源管理器中,右击项目名称,在右在解决方案资源管理器中,右击项目名称,在右键快捷菜单中单击键快捷菜单中单击【添加添加】|【新建项新建项】命令,弹命令,弹出出【添加新项添加新项】窗口。窗口。在在【添加新项添加新项】窗口左侧的窗口左侧的【类别类别】列表框中选列表框中选择择“Wi
22、ndows Forms”类别,在右侧类别,在右侧【模版模版】列表框选择列表框选择“继承的窗体继承的窗体”,打开继承选择器。,打开继承选择器。在继承选择器中选择添加的继承窗体的基窗体后,在继承选择器中选择添加的继承窗体的基窗体后,单击单击【确定确定】按钮,完成窗体的继承。按钮,完成窗体的继承。14.4 创建简单的Windows应用程序 一般情况下,设计创建一个一般情况下,设计创建一个Windows应应用程序的步骤如下。用程序的步骤如下。程序需求分析。程序需求分析。设计类及对象。设计类及对象。界面设计。界面设计。为窗体及控件添加各类事件及方法。为窗体及控件添加各类事件及方法。打包发布。打包发布。14.5 小结 本章主要介绍了本章主要介绍了Windows Forms项目的项目的基础知识,包括如何创建及打开一个基础知识,包括如何创建及打开一个Windows Forms项目,向项目添加窗体,项目,向项目添加窗体,修改窗体属性,继承已有窗体。对上述知修改窗体属性,继承已有窗体。对上述知识的了解和掌握是后续章节学习的基础。识的了解和掌握是后续章节学习的基础。