VisualC#2008程序设计第10章基于Windows的应用程序2020年2月21日星期五VisualC#2008程序设计第10章基于Windows的应用程序10.1Windows窗体应用程序概述10.2.Windows窗体及控件介绍10.3.常用控件的属性、方法和事件10.4.基于WindowsForms的程序设计2020年2月21日星期五VisualC#2008程序设计10.1Windows窗体应用程序概述1.Windows窗体项目结构以下过程将创建一个Windows应用程序,并了解整个项目的基本结构。实现步骤如下:(1)点击右下角“开始”“所有程序”“MicrosoftVisualStudio2008”“MicrosoftVisualStudio2008”打开VisualStudio2008开发环境。(2)选择菜单“文件”下面的“新建”菜单的级联菜单“项目…”,打开“新建项目”对话框,如图10-1所示。在左侧“项目类型”窗格中选择“VisualC#”,在右侧的“模板”窗格中选择“Windows窗体应用程序”(3)在“名称”文本框中,输入“MyFirstApplication”作为该项目的名称。在“位置”文本框中,输入你准备保存项目的目录或者单击“浏览…”按钮选择目录。(4)单击“确定”,VisualStudio将新建一个项目,并在窗体设计器中显示新窗体。2020年2月21日星期五VisualC#2008程序设计10.1Windows窗体应用程序概述(5)如图10-2所示,在“解决方案管理器”窗口中展开“Form1.cs”前面的“+”号,双击“Form1.Designer.cs”,可以查看“Form1.Designer.cs”的代码,看程序代码的基本结构:所有的代码都属于名称空间MyFirstApplication,名称空间MyFirstApplication中包含了类Form1,类Form1包含一些变量和方法。和类和对象中我们看到的类的定义有所不同,这里Form1的前面多了一个关键字partial,关键字partial允许将类、结构或接口的定义拆分到多个文件中。2020年2月21日星期五VisualC#2008程序设计10.1Windows窗体应用程序概述(6)既然加了关键字partial,那么类Form1的另一部分代码在什么位置呢?右键选择“Form1.cs”,在下拉菜单中选择“查看代码”,可以查看“Form1.cs”的代码。可以看到类Form1继承了Form类,并且包含构造函数Form1()调用函数InitializeComponent(),函数InitializeComponent()的定义在“Form1.Designer.cs”中。2020年2月21日星期五VisualC#2008程序设计10.1Windows窗体应用程序概述(7)双击“Program.cs”,可以看到Main()函数,Main()函数是整个应用程序的入口,由此开始应用程序的运行,Application.Run(newForm1())指在当前线程上开始运行标准应用程序消息循环,并使窗体Form1可见。2020年2月21日星期五VisualC#2008程序设计10.2.Windows窗体及控件介绍Windows窗体是一个内容丰富的编程框架,用于创建更易于使用的客户端应用程序。可以在System.Windows.Forms命名空间找到用于创建Windows桌面应用程序的类,它们统称为WindowsForms类。这个命名空间包含了Form类,它是所有对话框和顶级窗口的基类。另外,System.Windows.Forms命名空间还包含管理控件的类、与剪贴板进行交互的类、菜单和打印机的类等。Windows窗体是所有控件的最高一级容器,它里面可以放置各种各样的其他控件。【例10-2】在本任务中,将在【例10-1】的基础上,增加一个窗体。2020年2月21日星期五VisualC#2008程序设计10.2.Windows窗体及控件介绍1、新建一个窗体Windows窗体是一个内容丰富的编程框架,用于创建更易于使用的客户端应用程序。可以在System.Windows.Forms命名空间找到用于创建Windows桌面应用程序的类,它们统称为WindowsForms类。这个命名空间包含了Form类,它是所有对话框和顶级窗口的基类。另外,System.Windows.Forms命名空间还包含管理控件的类、与剪贴板进行交互的类、菜单和打印机的类等。Windows窗体是所有控件的最高一级容器,它里面可以放置各种各样的其他控件。2020年2月21日星期五VisualC#2008程序设计10.2.Windows窗体及控件介绍【例10-2】在本任务中,将在【例10-1】的基础上,增加一个窗体。实现步骤如下:(1)在“解决方案资源管理器”中右键单击项目名“MyFirstApplication”“添加”“Windows窗体”,如图10-3所示。在弹出的“添加新项”对话框中选择“Windows窗体”,在“名称”文本框中输入新建窗体的名字,例如“Form2.cs”,如图10-4所示。(2)点击“添加”,新建一个窗体,窗体设计器中出现Form2,解决方案资源管理器中也出现Form2。(3)点击按钮运行程序,出现的是哪一个窗口呢?为什么?2020年2月21日星期五VisualC#2008程序设计10.2.Windows窗体及控件介绍2、设置窗体属性【例10-3】在本任务中,将在【例10-2】的基础上,设置窗体的基本属性。实现步骤如下:(1)双击“解决方案资源管理器”中“Form1.cs”出现Form1所在的窗体。(2)在“属性”窗口找到Text属性,将属性值改为“第一个窗体”,如图10-5所示。(3)点击按钮运行程序,可以看到窗体Form1的标题已经发生改变,如图10-6所示。2020年2月21日星期五VisualC#2008程序设计10.2.Windows窗体及控件介绍(4)除了在“属性”窗口设置控件属性,还可以在程序运行时改变控件属性。双击Form1,进入到Form1的默认事件Load,在方法内加入语句“this.Text=在代码中改变属性;”,加入语句后方法如下所示。privatevoidForm1_Load(objectsender,EventArgse){//思考一下,代码能改为“Form1.Text=在代码中改变属性;”吗this.Text=在代码中改变属性;}(4)点击按钮运行程序,可以看到窗体Form1的标题同样发生改变。2020年2月21日星期五VisualC#2008程序设计10.2.Windows窗体及控件介绍3、向窗体添加控件【例10-4】在本任务中,将在【例10-3】的基础上,在Form1上添加一个按钮。实现步骤如下:(1)鼠标移动到悬浮在左上方的“工具箱”窗口(如果“工具箱”不存在,可以通过菜单“视图”“工具箱”打开“工具箱”窗口),双击按钮(或者在按钮上按住鼠标左键,拖动到Form1窗体上再释放左键),都可以在窗体上添加一个Button控件,在窗体上添加其他控件方法也相同。(2)如果觉得控件的位置不合适,可以选中控件后按住鼠标左键拖动到合适的地方,然后释放鼠标左键。(3)觉得控件的大小不合适,可以选中控件,此时控件周围会出现八个小方框,将鼠标放到八个小方框中的一个,鼠标会变成箭头,按住鼠标左键拖动控件到合适的大小后释放鼠标。(4)如果需要微调控件大小,按住shift键,和“↑”、“↓”、“←”、“→”键联合使用可以微调控件大小。2020年2月21日星期五VisualC#2008程序设计10.2.Windows窗体及控件介绍4、事件处理【例10-5】在本任务中,将在【例10-4】的基础上,为Form1上的按钮添加事件代码,当点击按钮后弹出【例10-2】中添加的Form2。实现步骤如下:(1)设置Button控件的Text属性为“显示Form2”。(2)当鼠标在控件上双击时,会自动添加该控件的默认事件,在“代码”窗口会自动添加该事件处理的代码框,只要在代码框中编辑代码即可。双击Form1上的按钮,为其添加“Click”事件处理,转到“Form1.cs”代码窗口,添加代码如下:privatevoidbutton1_Click(objectsender,EventArgse){Form2form=newForm2();form.Visible=true;}(3)点击按钮运行程序,点击按钮,查看结果。2020年2月21日星期五VisualC#2008程序设计10.3常用控件的属性、方法和事件1.属性属性就是窗体的特征,包括控件的名称、外观、可访问性、数据等内容。不同种类的控件也会有一些属于自己的特殊属性,而掌握这些特殊属性则是掌握不同控件的关键。比如,CheckBox控件用于进行选择,所以就拥有CheckState属性用于获取或设置CheckBox的选中状态,这个属性是所有单选或多选类控件都会有的属性,但是Button控件却不具有这个属性。在代码中输入“对象名”+“.”后,比如“button1.”,图标后面的就是该控件所具有的属性。可以很方便的在VisualStudio集成开发环境中“属性”窗口设置控件属性(如果没有“属性”窗口,点击“视图”“属性窗口”打开“属性”窗口)2020年2月21日星期五VisualC#2008程序设计10.3常用控件的属性、方法和事件Location用于获取或设置该控件的左上角相对于其容器的左上角的坐标2.事件事件是用户和程序交互地一种最普遍的方式,事件可由用户操作、程序代码或系统生成。例如,单击按钮时会触发Click事件,加载窗体时会触发Load事件。事件产生时会发送消息,并由专门的消息处理程序翻译并处理消息。通常,事件都是C#中预先设置好的、可以被对象识别的操作。用户只需要补充事件处理代码,就可以完成对事件的响应。控件一般都有一个默认事件,双击控件时会自动添加控件的默认事件。其它事件的代码添加需要点击切换到“事件”列表,在相应事件的右侧输入框中双击后添加事件响应代码.3.方法方法定义了控件类所具有的能够控制自身状态的一些操作。2020年2月21日星期五VisualC#2008程序设计10.3常用控件的属性、方法和事件(1)窗体Form窗体时所有控件的容器,窗体对应的类是Form,利用窗体的属性可以设置窗体位置、大小、颜色、标题、是否透明等。窗体可以响应多种事件,如单击、双击、加载、关闭、大小改变、位置改变等等。窗体的默认事件为Load。(2)按钮Button按钮控件Button允许用户通过单击按钮来执行操作。当按钮被单击时,即调用Click事件处理程序,可将代码放入Click事件处理程序来执行所需要的操作。Button类的Text属性可用来表示按钮上显示的标题文本。2020年2月21日星期五VisualC#2008程序设计10.3常用控件的属性、方法和事件(3)标签Label标签控件Label用来显示用户不能编辑的文本,常用属性为Text。(4)文本框TextBox文本框TextBox提供一个文本编辑区域,用于显示用户输入或显示文本,常用属性为Text,默认事件为TextChanged,当文本框中的文本发生变化时触发。此外还有KeyDown、KeyPress和KeyUp事件,用于响应键盘按键事件。可以通过设置Multiline属性为True使文本框变为多行,PasswordChar属性可以设置密码字符,ReadOnly属性为True可以让文本框只读。2020年2月21日星期五VisualC#2008程序设计10.3常用控件的属性、方法和事件(5)单选框RadioButton单选框RadioButton,当同一组有多个单选按钮时,只能有一个单选按钮被选中。其中同一个容器