

C#是完全面向对象的程序设计语言,在C#编程中接触到的每一个事物都可以称为对象。例如,开发Windows窗体应用程序时,见到的每个窗体和拖放到窗体上的每个文本框、按钮都是对象。同种类型的对象构成一个类,类是对事物的定义,对象是事物本身。打个比方,类就相当于一个模具,而对象则是由这个模具产生出来的具体产品。一个类可以产生很多对象。例如,VS.NET工具箱中存放了很多控件类,包括文本框类、按钮类等。以常用的按钮控件类为例,当在窗体上添加一个按钮时,就是由按钮控件类创建了一个按钮对象,添加多个按钮就是由按钮控件类创建了多个按钮对象。

每个对象都有自己的特征和行为。对象的静态特征称为对象的属性,如按钮的颜色、大小、位置等。同类对象具有相同的属性,但是可以有不同的属性值。例如,两个按钮都有颜色属性,一个是红色,一个是蓝色。可以通过修改属性值来改变控件的状态,也可以读取这些属性值来完成某个特定操作。

方法是对象的行为特征,是一段可以完成特定功能的代码,如实现窗体显示、隐藏、关闭的方法等。

当按一下键盘或单击一下鼠标时,Windows操作系统就会有相应的反应。这种键盘键的按下、鼠标键的单击、释放都可称为事件。事件就是预先定义好的能被对象识别的动作。当用户或系统触发事件时,对象就会响应事件,实现特定的功能。这种通过随时响应用户或系统触发的事件,并做出相应响应的机制就叫做事件驱动机制。响应事件时,执行的代码称为事件处理程序。开发应用程序时,编程人员的主要工作之一就是针对控件可能被触发事件设计适当的事件处理程序。

窗体(Form)就是应用程序设计中的窗口界面,是C#编程中最常见的控件,其他控件对象都必须放置在窗体上。在创建C#的Windows应用程序和Web应用程序时,VS.NET IDE会自动添加一个窗体。

窗体常用的属性如表1.2所示,如果想学习更多的窗体属性,可以查看MSDN帮助。可以通过设置或修改这些属性来改变窗体的状态。属性的设置或修改有两种途径:一种是在设计窗体时,通过属性窗口进行设置;另一种是在程序运行时,通过代码来实现。通过代码设置属性的一般格式为:
对象名.属性名=属性值;
例如,要把名为Form1的窗体标题修改为“我的窗体”,代码如下:
Form1.Text="我的窗体";
| 表1.2 窗体常用属性 |
|---|
属 性 | 说 明 |
Name(名称) | 窗体的名称,可以在代码中标识窗体 |
BackColor(背景颜色1) | 窗体的背景色 |
BackgroundImage(背景图像) | 窗体的背景图案 |
Font(字体) | 窗体中控件默认的字体、字号、字形 |
ForeColor(前景色) | 窗体中控件文本的默认颜色 |
MaximizeBox(最大化按钮) | 窗体是否具有最大化、还原按钮,默认为true |
MinimizeBox(最小化按钮) | 窗体是否具有最小化按钮,默认为true |
ShowlnTaskbar(在任务栏显示) | 确定窗体是否出现在任务栏,默认为true |
Text(文本) | 窗体标题栏中显示的标题内容 |

窗体的常用方法如表1.3所示,通过调用这些方法可以实现一些特定的操作。
| 表1.3 窗体常用方法 |
|---|
方 法 | 说 明 |
Close() | 关闭窗体 |
Hide() | 隐藏窗体 |
Show() | 显示窗体 |
Hide()方法和Show()方法是窗体和绝大多数控件共有的方法。调用方法的一般格式为:
对象名.方法名(参数列表)
需要指出的是,有种特殊的方法叫做静态方法,这种方法可以由类名直接调用(后续章节会详细介绍),其格式如下:
类名.方法名(参数列表)

窗体的常用事件如表1.4所示。
| 表1.4 窗体常用事件 |
|---|
事 件 | 说 明 |
Activated事件 | 窗体激活事件,窗体被代码(或用户)激活时发生 |
FormClose事件 | 窗体关闭事件,窗体被用户关闭时发生 |
Load事件 | 窗体加载事件,窗体加载时发生 |
MouseClick事件或Click事件 | 鼠标单击事件,用户单击窗体时发生 |
MouseDoubleClick事件 | 鼠标双击事件,用户双击窗体时发生 |

控件有很多,读者不妨边学边用,在使用中学习。这里仅介绍案例中用到的按钮控件和文本框控件。

按钮(Button)控件用于接收用户的操作信息,并激发相应的事件,是用户与程序实现交互的主要方法之一。按钮的主要属性和事件如表1.5所示。
| 表1.5 按钮常用属性和事件 |
|---|
属性和事件 | 说 明 |
Name属性 | 按钮名称,在代码中作为按钮标识 |
Text属性 | 按钮显示的文本内容 |
TextAlign属性 | 按钮上文本的对齐方式 |
Click事件 | 鼠标单击按钮事件,用户单击按钮时发生 |

文本框(TextBox)控件用于获取用户输入的信息或向用户显示文本信息。文本框的主要属性如表1.6所示。
| 表1.6 文本框常用属性 |
|---|
属 性 | 说 明 |
MaxLength(最大长度) | 文本框可以输入或粘贴的最大字符数 |
MultiLine(多行) | 是否可以在文本框中输入多行文本,默认为false |
Name | 文本框名称,在代码中作为文本框标识 |
PasswordChar(密码字符) | 指定当文本框作为密码框时,框中显示的字符(框中不显示实际输入文本) |
ReadOnly(只读) | 指定文本框中的文本是否是只读属性,默认为false |
Text | 文本框内容 |
TextAlign | 文本框内文本的对齐方式 |

为了方便后续学习,下面简单介绍控件的主要操作,即控件的添加、控件的选择和控件的布局。

从工具箱中添加控件的方法主要有3种:一是单击工具箱中欲添加的控件,然后在窗体的相应位置单击;二是直接从工具箱中拖动欲添加的控件到窗体中的相应位置;三是双击工具箱中欲添加的控件,窗体中就添加了一个控件,双击多次可添加多个。

在窗体中,控件的选择操作与Windows文件的选择操作类似,共有两种选择方法:第一种是按住Shift键或Ctrl键不放,然后依次单击要选择的控件;第二种是把鼠标指针移到窗体中的适当位置,拖动鼠标画出一个矩形,则矩形内的所有控件(包括边线所经过的控件)均已被选中。控件被选中后,其周围会出现8个方块状的控制点,当鼠标指针指向控制点时会变成双向箭头,这时拖动鼠标即可调整控件的大小。

如图1.14所示,窗体中添加的多个控件其大小、位置是杂乱无章的,可通过以下两步快速对其进行布局。
(1)选中需布局的控件,被选中的控件周围会出现8个方块状控制点,其中有一个控件周围的控制点为空心小方块,该控件称为基准控件(基准控件可以通过再次单击进行选择),图1.14中的button1就是基准控件。当对选中的控件进行对齐、大小、间距调整时,系统会自动以基准控件为准进行调整。
(2)通过【格式】菜单或工具栏实现控件布局。通过【格式】|【对齐】命令可把所选控件调整为与基准控件对齐,通过【格式】|【使大小相同】命令可把控件大小调整为与基准控件相同,通过【水平间距】、【垂直间距】命令可调整各控件间的间距,另外,还可以通过【顺序】命令调整控件的层叠关系。
例如,要把图1.14的控件调整为图1.15所示的状态,操作如下:选中4个按钮并以button1为基准控件,选择【格式】|【使大小相同】|【两者】命令,然后选择【格式】|【对齐】|【左对齐】命令,最后选择【格式】|【垂直间距】|【相同间隔】命令,即可得到如图1.15所示的界面。

| 
|
| 图1.14 控件布局前的界面 | 图1.15 控件布局后的界面 |


(建议全屏播放)
案例说明

如图1.16所示,单击【显示】按钮,可在文本框中显示文字“Hello, world!”;单击【清屏】按钮,可清除文本框中的内容,如图1.17所示。

(1)学会创建并编译、运行简单的Windows窗体应用程序。
(2)初步掌握对象、类、属性、方法和事件的概念。
(3)学会使用窗体、文本框和按钮控件。

| 
|
图1.16 单击【显示】按钮的效果 | 图1.17 单击【清屏】按钮的效果 |

(1)新建项目
① 选择【文件】|【新建】|【项目】命令,打开【新建项目】对话框,如图1.18 所示。

② 在该对话框中进行如下操作:在左侧【项目类型】窗格中选择Visual C#,这时在中间的【模板】窗格中列出了Visual C#可以创建的各种项目,选择【Windows窗体应用程序】选项。
③ 在【名称】文本框中输入“WinHello”作为该项目的名称,在【位置】文本框中输入项目的保存路径,或者单击【浏览】按钮选择项目的保存路径。
④ 单击【确定】按钮,项目创建完成,VS.NET自动打开设计视图,并自动生成一个Windows窗体供用户进行程序界面设计。该窗体的名称默认为Forml,保存在窗体文件中,窗体文件名称默认为“窗体名称.cs”,这里为Forml.cs。其设计视图可通过双击解决方案资源管理器的窗体文件来打开,或者通过选择【视图】|【视图设计器】命令来打开。
(2)设计程序界面
设计程序界面包括添加控件、设置控件属性和编写代码3步。
① 添加控件
要实现图1.16和图1.17所示的程序窗口,需要添加一个文本框控件和两个按钮控件。向窗体添加控件的方法有多种,可以选中工具箱中的相应控件,将其拖放到窗体上,或直接双击工具箱中需要添加的控件。添加完所需控件后,适当调整控件的位置,效果如图1.19所示。

|
| 图1.19 添加控件后的效果 |
② 设置控件属性
图1.19与图1.17相比,还存在一些差异,可以通过设置控件属性来调整控件状态。按表1.7所示设置各个对象的属性。
在【属性】窗口中按照表1.7进行属性设置以后,图1.19与图1.17就一样了,界面设计到此已经完成。这时如果按F5键,程序已经可以运行,因为VS.NET已经自动生成了运行程序所必需的代码。但当单击【显示】或【清屏】按钮时,程序却没有任何反应,这是因为还没有为【显示】按钮和【清屏】按钮编写任何代码。下一步工作就是根据需要为各个控件编写代码。
| 表1.7 属性设置表 |
|---|
控件对象名 | 属 性 名 | 属 性 值 |
Form1 | Name | Form1 |
Text | 第一个Windows程序 |
TextBox1 | Name | textBox1 |
Text | 空白 |
Font | 宋体,12px |
Button1 | Name | button1 |
Text | 显示 |
Font | 宋体,12px |
| Button2 | Name | button2 |
| Text | 清屏 |
| Font | 宋体,12px |
③ 编写代码

注意事项

Main()方法包含在Program.cs文件中,其代码都是自动生成的。其中,语句“Application. Run(new Form1())”的功能是运行窗体,Run就是运行的意思,其他的语句可以不去细究。

(1)Windows应用程序文件夹结构
学会创建、运行Windows应用程序以后,下面来看Windows应用程序的文件夹结构。在【解决方案资源管理器】窗口中可以看到,与控制台应用程序类似,Windows应用程序也包含了解决方案名称和项目名称。其中,主要应了解以下3个文件。
 | Form1.cs文件:窗体文件,程序员对窗体编写的代码都保存在这个文件中。 |
 | Form1.Designer.cs文件:窗体设计文件,是窗体设计器生成的代码文件,作用是对窗体上的控件做初始化工作。该文件中的代码是程序员在拖放控件、设置控件属性时由VS.NET自动生成的,一般不需要程序员去直接操作这个文件。 |
 | Program.cs文件:主程序文件,包含了作为程序入口的Main()方法。 |
(2)Windows应用程序编程模型
Windows窗体应用程序的编程模型主要由窗体、控件及其事件组成,创建一个Windows窗体应用程序时,系统会自动创建一个从Form类(窗体类)派生的窗体对象,然后再添加控件、设置属性、创建事件处理程序。