第1章 VisuaI C# 2008概述
Visual C# 2008(读做“C sharp”)是Microsoft为生成在.NET Framework上运行的多种应用程序而设计的一种编程语言,该语言简单、功能强大、类型安全,而且是面向对象的。C#语言保持了C样式语言的表示形式和优美,同时也进行了许多创新,实现了应用程序的快速开发。
Visual Studio是一套完整的开发工具,可用于生成ASP.NET Web应用程序、XML Web Services、桌面应用程序和移动应用程序。Visual Studio支持包括Visual C#在内的多种编程语言,这是通过功能齐全的代码编辑器、项目模板、设计器、代码向导、功能强大且易于使用的调试器,以及其他工具来实现的。通过.NET Framework类库可以访问多种操作系统服务和其他有用的精心设计的类,这些类可显著地提高开发效率。
本章首先简要介绍C#语言,然后说明如何安装、配置和使用Visual Studio 2008集成开发环境(IDE),最后讲述如何在这个集成开发环境中创建4种不同类型的C#应用程序。
1.1 C#语言简介
可以把C#看做是C++与Visual Basic的完美结合,它既具有C++的强大功能,又具有Visual Basic的快速应用开发特性(RAD),因此受到了众多开发人员的青睐,在推出后的短短几年内就成为最流行的编程语言。本节介绍C#语言与 .NET Framework及其他语言的比较,以及C# 3.0的新功能等。
1.1.1 C#语言与 .NET Framework
.NET Framework是Windows的一个组成部分,C#是一种基于 .NET Framework平台的编程语言,用其可以创建在.NET Framework上运行的多种应用程序。
1.C#语言
C#是一种简洁且类型安全的面向对象的语言,开发人员可以用其来构建在.NET Framework上运行的各种安全且可靠的应用程序。使用C#可以创建传统的Windows客户端应用程序、XML Web services、分布式组件、客户端/服务器应用程序,以及数据库应用程序等。Visual C# 2008提供了高级代码编辑器、方便的用户界面设计器、集成调试器和许多其他工具,使开发人员可以更容易地在C#语言3.0 版和 .NET Framework 3.5版的基础上开发应用程序。
C#语言具有以下特点。
(1)语法表现力强,简单易学。C#中的花括号语法({})使任何熟悉C、C++或Java的开发人员都可以迅速上手,只要了解上述任何一种语言,通常在很短的时间内就可以开始使用C#高效地工作。C#语法简化了C++的诸多复杂性,并提供了很多强大的功能。例如,null的值类型、枚举、委托、lambda表达式和直接内存访问,这些都是Java所不具备的。C#支持泛型方法和类型,从而提供了更出色的类型安全和性能。并且提供了迭代器,允许集合类的实施者创建自定义的迭代行为,以便容易被客户端代码使用。在C# 3.0中,LINQ(语言集成查询)表达式使强类型查询成为一流的语言构造。
(2)面向对象。C#语言支持封装、继承和多态性的概念,所有的变量和方法,包括Main方法(应用程序的入口点)都封装在类定义中。类可能直接从一个父类继承,可以实现任意数量的接口。重写父类中的虚方法时,要求override关键字作为一种避免意外重定义的方式。在C#中,结构类似于一个轻量类。它是一种堆栈分配的类型,可以实现接口,但不支持继承。除了这些基本的面向对象的原理之外,C#还通过几种创新的语言构造简化了软件组件的开发,这些构造如下。
● 用委托封装方法签名,实现了类型安全的事件通知。
● 属性(Property)充当私有成员变量的访问器。
● 属性(Attribute)提供关于运行时类型的声明性元数据。
● 内联XML文档注释。
● LINQ提供了跨各种数据源的内置查询功能。
(3)在C#中,如果必须与其他Windows软件(如COM对象或本机Win32 DLL)交互,则可以通过一个称为“互操作”的过程来实现。互操作使C#程序能够完成本机C++应用程序可以完成的几乎所有任务。在直接内存访问必不可少的情况下,C#甚至支持指针和“不安全”代码的概念。
(4)C#的生成过程比C和C++简单,比Java更为灵活。没有单独的头文件,也不要求按照特定顺序声明方法和类型,在C#源文件可以定义任意数量的类、结构、接口和事件。
2..NET Framework平台体系结构
C#程序在.NET Framework平台上运行,该平台是Windows的一个不可或缺的组件,包括一个称为“公共语言运行库”(CLR)的虚拟执行系统和一组统一的类库。CLR是Microsoft的公共语言基础结构(CLI)的商业实现,它提供内存管理、线程管理和远程处理等核心服务,并且还强制实施严格的类型安全,以及可提高安全性和可靠性的其他形式的代码准确性。CLI是一种国际标准,是用于创建语言和库在其中无缝协同工作的执行和开发环境的基础。
用C#编写的源代码被编译为一种符合CLI规范的中间语言(IL),IL代码与资源(例如位图和字符串)一起作为一种称为“程序集”的可执行文件存储在磁盘上,通常具有的扩展名为 .exe或 .dll。程序集包含清单,它提供有关程序集的类型、版本、区域性和安全要求等信息。
执行C#程序时,程序集将加载到CLR中,并可能根据清单中的信息执行不同的操作。如果符合安全要求,CLR就会执行实时(JIT)编译以将IL代码转换为本机机器指令。CLR还提供与自动垃圾回收、异常处理和资源管理有关的其他服务。由CLR执行的代码有时称为“托管代码”,它与编译为面向特定系统的本机机器语言的“非托管代码”相对应。如图1-1所示为C#应用程序的编译与运行流程。
图1-1 C#应用程序的编译与运行流程
语言互操作性是.NET Framework的一项主要功能,因为由C#编译器生成的IL代码符合公共类型规范(CTS),因此从C#生成的IL代码可以与从Visual Basic、Visual C++、Visual J#的 .NET版本或者其他20多种符合CTS语言中的任何一种生成的代码进行交互。单一程序集可能包含用不同 .NET语言编写的多个模块,并且类型可以相互引用,就像它们是用同一种语言编写的。
除了运行时服务之外,.NET Framework还包含一个由4000多个类组成的内容详尽的库。这些类被组织为命名空间,为从文件输入和输出、字符串操作、XML分析到Windows窗体控件的所有内容提供了各种有用的功能,典型的C#应用程序使用 .NET Framework类库广泛地处理各种常见任务。
1.1.2 C#语言与其他语言的比较
C#是一种面向组件的新型语言,它具有许多其他 .NET Framework编程语言所共有的功能。C#的关键字大约只有80个,其中大多数关键字对于使用过C、C++、Java或Visual Basic的开发人员来说都很熟悉。不同语言的关键字之间存在语法差别,但这种差别通常很小。对于熟悉其他语言的程序员而言,了解C#与其他语言的差异很有必要的。
1.与C和C++比较
C#与C和C++的主要差异如下。
(1)内存用垃圾收集系统来管理,没有用来撤销new调用的Delete方法。
(2)不使用(.h)头文件,此类文件也不是必需的,现在将存储于头文件中的信息作为程序集的一部分存储。
(3)类定义中右花括号(})后面不必使用分号。
(4)Main方法的首字母大写,而且是静态类的成员,其返回类型为int或void。
(5)每个程序都必须包括Main方法,否则不能编译。
(6)switch语句的break语句不是可选的。
(7)条件必须为Boolean值。
(8)默认值由编译器分配,对于引用类型,为null;对于值类型,则为0。
2.与Visual Basic比较
C#与Visual Basic的主要差异如下。
(1)使用花括号,而不是End之类的关键字。
(2)使用分号,而不是换行符。
(3)区分大小写,例如,if语句的首字母必须使用小写。
(4)条件必须为Boolean值,而且应放在圆括号内。
3.与Java比较
C#与Java的主要差异如下。
(1)Main方法的首字母大写。
(2)在值类型和引用类型之间进行装箱和取消装箱转换,不需要创建包装类型。
(3)Java中的最终类在C#中是密封类。
(4)C#支持属性。
(5)默认情况下,C#方法为非虚拟方法。
(6)为了包括编译器的其他信息而支持属性。
1.1.3 C# 3.0的新功能
C# 3.0语言和编译器引入了多种新的语言功能,这些新的语言构造可以分别用在各种上下文中,并且可以共同完成LINQ。
C# 3.0语言的新功能如下。
(1)隐式类型的本地变量和数组:在与本地变量一起使用时,var关键字指示编译器根据初始化语句右侧的表达式推断变量或数组元素的类型。
(2)对象初始值设定项:支持不必显式调用构造函数即可初始化对象。
(3)集合初始值设定项:支持使用初始化列表,而不是对Add或其他方法的特定调用来初始化集合。
(4)扩展方法:使用静态方法扩展现有类,这些静态方法可以通过实例方法语法调用。
(5)匿名类型:允许动态创建可以添加到集合中并且可以使用var访问的未命名结构化类型。
(6)Lambda表达式:支持带有可绑定到委托或表达式树的输入参数的内联表达式。
(7)查询关键字:用来指定查询表达式中子句的关键字,包括from、where(可选)、排序(可选)、join(可选)、select或group,以及into子句(可选)。
(8)自动实现的属性:支持使用简化的语法声明属性。
(9)分部方法定义:分部类型可以包含分部方法。
1.2 Visual Studio 2008简介
如前所述,C#是C++与Visual Basic的完美结合,同时具有C++的强大和Visual Basic的快速开发特性。而C#之所以具有方便易用的快速开发特性,主要是得益于Visual Studio这个世界级的开发工具。工欲善其事,必先利其器。使用C#进行应用开发之前,熟悉和掌握Visual Studio 2008集成开发环境的新功能及其安装配置方法很有必要。
1.2.1 Visual Studio 2008的新功能
与Visual Studio 2005相比,Visual Studio 2008在许多方面都有了重要的更新和改进,并增加了如下8个方面的新功能。
(1)集成开发环境。Visual Studio 2005中的大多数设置通过迁移可以在Visual Studio 2008中使用,通过对ContentVersion元素使用新值可以指定安装社区组件是为了与Visual Studio 2005和Visual Studio 2008,还是只为了与Visual Studio 2008一起使用。在Visual Studio 2008中,“社区”菜单已被移除,以前称为“提出问题”和“检查问题状态”的命令已经并入名为“MSDN论坛”的新命令中。“发送反馈意见”命令现在变成了“报告bug”命令,这些命令都包含在“帮助”菜单中。ID导航器改进后的界面使在各项之间进行切换比较轻松,工具窗口停靠目标经过改进后使停靠工具窗口比较轻松。Visual Studio 2008使用Windows标准对话框,而不是自定义对话框,使得导航体验与Windows中更加一致。
(2)项目和解决方案。新的Web应用程序项目包含一个基于项目文件的结构和一个基于将项目的所有代码编译到单个程序集的生成模型,并支持类关系图、测试开发和泛型等,以及ASP.NET 2.0版的许多新功能。使用Visual Studio 2008可以创建具有下一代用户界面的Web应用程序及可重复使用的客户端组件,支持基于服务器和基于客户端的AJAX编程模型。在Visual Studio 2008中可以创建4种类型WPF项目,并更新了Visual Studio 2005和ASP.NET 2.0版的功能。此外通过使用多目标功能还可以使代码面向.NET Framework的2.0、3.0或3.5版本。ClickOnce部署得到了增强并具备一些新的功能,Windows Installer部署已经针对Windows Vista和.NET Framework的最新版本进行了更新。
(3)编辑功能。让用户体验到一些新工具中丰富的CSS编辑功能,可以比以前更加轻松地使用级联样式表(CSS)。IntelliSense有了很大的改进,现在支持创作JScript和编写ASP.NET AJAX脚本。对象浏览器和查找符号对多目标的支持可以指定对象浏览器只显示 .NET Framework或 .NET Compact Framewor的单一版本的信息。通过使用WPF设计器可以在集成开发环境中创建WPF(Windows Presentation Foundation,windows呈现层基础)应用程序和自定义控件,WPF设计器不仅具有XAML实时编辑功能,还可以改善用户的图形设计时体验。
(4)数据访问功能。对象关系设计器(O/R设计器)可以用来创建和编辑在应用程序和数据库之间进行映射的LINQ to SQL对象。对类型化数据集的“N层”支持增强了数据集设计器,这有助于将TableAdapter代码和类型化数据集代码分离到独立的项目中。数据集设计器中加入了分层更新的功能,以使数据可以保存在多个相关表中,类型化数据集中添加了新的TableAdapterManager对象。本地数据库缓存将SQL Server Compact 3.5数据库和Microsoft Synchronization Services for ADO.NET加入到应用程序中,并使应用程序准备定期与服务器上的远程数据库进行数据同步。
(5)LINQ。LINQ是Visual Studio 2008中的一组新功能,它可以将强大的查询功能扩展到C#和Visual Basic的语法中。LINQ引入了标准且易于学习的查询和转换数据模式,并且可以扩展以潜在支持任何类型的数据源。Visual Studio 2008包括LINQ提供程序的程序集,借助这些程序集可以启用 .NET Framework集合、SQL数据库、ADO.NET数据集,以及XML文档的语言集成查询。
(6)客户端应用程序服务。客户端应用程序服务是 .NET Framework 3.5中的一项新功能,通过客户端应用程序服务使基于Windows的应用程序(包括Windows窗体应用程序和WPF应用程序)可以方便地访问ASP.NET登录、角色和配置文件服务,可以对用户进行身份验证,并且从共享服务器中检索用户角色和应用程序设置。
(7)报表功能。Visual Studio 2008提供了用于创建报表应用程序的两个新项目模板,当创建新报表应用程序项目或ASP.NET报表网站时将自动启动报表向导。该向导将指导用户完成创建基本报表的步骤;在完成向导之后可以使用报表设计器增强报表。表达式编辑器现在提供可在报表表达式中使用的示例表达式,可以将示例表达式复制到报表中原样使用这些表达式,或者对其修改以满足设计需要。如果配置ASP.NET ReportViewer控件来进行本地处理,则现在可以使用RSClientPrint控件,从而可以打印控件处理过且与报表服务器无关的报表;如果配置ReportViewer控件来进行本地处理,则这些控件将压缩呈现或导出为PDF格式的报表。
(8)MSBuild功能。MSBuild功能允许用户为 .NET Framework的特定版本生成项目,一些新的API函数支持此新功能。它在系统使用多个处理器时可以识别多核处理器或多个单独的处理器,并使用所有可用的处理器来减少项目的总生成时间。生成事件日志记录功能已经升级,可以处理多处理器生成事件并支持分布式及集中式日志记录模型。新的ItemDefinitionGroup项目文件元素可以用来定义一组项定义,这些项定义是应用于项目中所有项的全局默认元数据值。Visual Studio 2008已更新了MSBuild程序集的文件名和位置,一些程序集在其文件名后面附加了“v3.5”。
1.2.2 安装Visual Studio 2008
在Windows Vista操作系统平台上安装Visual Studio 2008 Team System的步骤如下。
(1)将Visual Studio 2008的安装DVD光盘放到DVD驱动器中,此时安装程序将自动运行并出现如图1-2所示的对话框。
图1-2 “Visual Studio 2008安装程序”对话框
(2)单击“安装Visual Studio 2008”选项,出现如图1-3所示的安装向导欢迎对话框。
图1-3 安装向导的欢迎对话框
(3)单击“下一步”按钮,显示如图1-4所示的安装程序的起始页。选中“我已阅读并接受许可条款”单选按钮,并输入产品密钥。
图1-4 安装程序的起始页
(4)单击“下一步”按钮,显示如图1-5所示的安装程序选项页,选择要安装的产品功能并设置产品安装路径(例中选择“完全”单选按钮)。
图1-5 安装程序选项页
(5)单击“安装”按钮,显示如图1-6所示的安装程序安装页,其中显示安装进度。如果需要,随时可以单击“取消”按钮退出安装。
图1-6 安装程序安装页
(6)安装结束,显示如图1-7所示的安装程序完成页。
图1-7 安装程序完成页
(7)单击“完成”按钮,显示如图1-8所示的安装产品文档对话框。
图1-8 安装产品文档对话框
(8)单击“安装产品文档”选项,显示如图1-9所示的MSDN Library安装向导欢迎对话框,单击“下一步”按钮。
图1-9 MSDN Libaray安装向导欢迎对话框
(9)在安装向导的提示下,完成Microsoft MSDN Library for Visual Studio 2008的安装。
为了改进Visual Studio 2008和.NET Framework的稳定性和性能,Microsoft公司已于2008年8月11日发布了Visual Studio 2008 SP1,下载网址为
http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=27673c47-b3b5-4c67-bd99-84e525b5ce61
2008年9月29日,Microsoft公司又发布了MSDN Library for Visual Studio 2008 SP1,下载网址为
http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=7bbe5eda-5062-4ebb-83c7-d3c5ff92a373
安装Visual Studio 2008 SP1后,代码智能提示将会变成英文。如果读者希望将代码智能提示改为中文,可以到Microsoft的网站上下载KB957507补丁,网址为
http://code.msdn.microsoft.com/KB957507
下载并安装上述3个补丁后,Visual Studio 2008的全部安装过程最终完成。
1.2.3 选择默认环境设置
为启动Visual Studio 2008,单击“开始”→“所有程序”→“Microsoft Visual Studio 2008”→“Microsoft Visual Studio 2008”选项。当第1次启动Visual Studio 2008时,将会出现“选择默认环境设置”对话框,如图1-10所示。在“选择默认环境设置”列表框中选择“Visual C#开发设置”选项,然后单击“启动Visual Studio”按钮。
图1-10 “选择默认环境设置”对话框
1.3 认识Visual Studio 2008 IDE
Visual Studio产品系列共用一个IDE(集成开发环境),该环境由多种界面元素组成,包括菜单、标准工具栏,停靠或自动隐藏在左侧、右侧、底部和编辑器空间中的各种工具窗口。可以使用的工具窗口、菜单和工具栏取决于所处理的项目或文件类型。
1.3.1 起始页
启动Visual Studio 2008后显示起始页,如图1-11所示。在其中可以访问或创建项目、了解未来的产品版本和会议,也可以阅读最新的开发文章。若要访问起始页,单击“视图”→“其他窗口”→“起始页”选项。
图1-11 Visual Studio 2008起始页
起始页包含以下窗格。
(1)最近的项目:用于显示最近更新的项目列表,可以用于创建新项目和打开现有的项目。
(2)开始:显示一个列表,其中包括旨在提高工作效率和突出产品功能的帮助主题、网站、技术文章和其他资源,该主题列表根据应用设置的不同而变化。如果选择默认环境设置为“Visual C#开发设置”,则该主题列表中会显示“Visual C#的新增内容”、“创建您的第1个应用程序”、“如何实现…?”,以及“学习Visual C#”等链接。
(3)Visual Studio标题新闻:显示Visual Studio产品和事件信息的链接。
(4)MSDN中文网站最新更新:默认情况下显示应用设置指定的RSS源中的文章列表。
1.3.2 菜单与工具栏
在IDE中,菜单栏位于主窗口标题栏的下方,其中提供了用于创建、保存、生成、调试,以及测试应用程序的所有命令。除了包含常规的“文件”、“编辑”、“视图”、“窗口”及“帮助”菜单外,还提供了应用程序开发专用的一些菜单,例如“项目”、“生成”、“调试”、“数据”及“测试”等,如图1-12所示。
图1-12 Visual Studio 2008的菜单栏
常用菜单说明如下。
(1)“文件”菜单:包含与文件操作相关的各种命令,例如创建、打开及保存项目等。
(2)“编辑”菜单:包含与文本或控件操作相关的各种命令,例如剪切、复制和粘贴等。
(3)“视图”菜单:包含显示或隐藏集成开发环境中的各种窗口或工具栏的命令,例如代码窗口、设计器窗口、服务器资源管理器及解决方案资源管理器等命令。
(4)“项目”菜单:包含在当前项目中添加各种组件的命令,例如添加窗体、用户控件、组件、类、新项或现有项、引用及服务引用等命令。
(5)“生成”菜单:包含用于生成解决方案、生成和发布项目的命令。
(6)“调试”菜单:包含调试应用程序的各种命令,例如启动调试、不调试执行、逐语句执行、逐过程执行及新建断点等命令。
(7)“数据”菜单:包含与数据源操作相关的命令,例如添加和显示数据源等。
(8)“格式”菜单:包含设计控件格式的各种命令,例如设置对齐方式、垂直间距和水平间距,及使大小相同等命令。
(9)“工具”菜单:包含连接到设备、连接到数据库、连接到服务器、选择工具箱项及设置集成开发环境选项等命令。
(10)“测试”菜单:包含与项目测试相关的命令,例如新建测试、加载元数据文件及创建新测试列表等命令。
(11)“分析”菜单:包含启动性能向导、比较性能报告及探查器等命令。
(12)“窗口”菜单:包含用于控制窗口布局的各种命令,以及当前打开的所有窗口的列表等。
(13)“帮助”菜单:包含用于获取帮助信息的各种命令,例如实现、搜索、目录和索引、MSDN论坛、报告bug、检查更新及技术支持等。
工具栏位于菜单栏下方,其中包含一些按钮,用于提供访问菜单命令的快捷方式。默认会显示标准工具栏,根据当前处理的项目和文件类型也会自动显示其他工具栏。如图1-13所示为在设计Windows窗体应用程序时的标准工具栏和窗体布局工具栏,后者位于前者的下方。
图1-13 标准工具栏和窗体布局工具栏
要显示某个工具栏,单击在“视图”→“工具栏”→要显示的工具栏名称。也可以用鼠标右键单击菜单栏或标准工具栏,然后单击快捷菜单中要显示的工具栏名称。
1.3.3 解决方案资源管理器
解决方案和项目包含一些项,这些项表示创建应用程序所需的引用、数据连接、文件夹和文件。解决方案容器可包含多个项目,而项目容器通常包含多个项。解决方案资源管理器用于显示解决方案、解决方案的项目及其中的项。通过解决方案资源管理器可以打开文件后编辑,在项目中添加新文件,并查看解决方案、项目和项属性等。
如图1-14所示为在Visual Studio 2008中使用Visual C#创建Windows窗体应用程序和ASP.NET Web应用程序时所显示的解决方案资源管理器窗口。
图1-14 解决方案资源管理器窗口
在解决方案资源管理器的工具栏中包含以下按钮。
(1)“属性”:显示树视图中所选项的相应属性用户界面。
(2)“显示所有文件”:显示所有项目项,包括那些已经被排除的项和正常情况下隐藏的项。
(3)“刷新”:刷新所选项目或解决方案中的项的状态。
(4)“嵌套相关文件”:为Web相关项目中互相依赖的文件建立父级和子级层次结构,例如,组成Web窗体的两个文件将互相嵌套。
(5)“查看代码”:打开选定文件以在代码编辑器中编辑。
(6)“视图设计器”:在代码编辑器的设计器模式下打开选定的文件进行编辑。
(7)“查看类关系”:启动类设计器,以显示当前项目中类的关系图。
(8)“复制网站”:打开“复制Web项目”对话框,以便在Web服务器之间复制整个Web项目或Web项目集合,还可以使用新的名称在同一个服务器上复制Web项目。只有选定了一个Web项目时,此按钮才可用。
(9)“ASP.NET配置”:显示ASP.NET网站管理工具。
1.3.4 设计器窗口
用Visual C#创建不同类型的应用程序都需要使用相应的设计器来完成图形用户界面的设计。
(1)创建Windows窗体应用程序时,使用如图1-15所示的Windows窗体设计器来完成可视化且基于客户端的窗体设计,可以从工具箱中将控件拖动或绘制到窗体中。
图1-15 Windows窗体设计器
使用Windows窗体设计器可以为窗体添加控件,布局并为其事件编写代码,此外还可以完成以下操作。
● 在某个窗体中添加组件及数据控件。
● 双击设计器中的窗体并为该窗体编写Load事件中的代码,或双击窗体上的控件并为该控件的默认事件编写代码。
● 通过选择某个控件编辑该控件的属性。
● 通过使用鼠标或箭头键移动选定的控件来调整该控件的位置。
(2)创建ASP.NET Web应用程序时,使用网页设计器来完成ASP.NET网页的设计。网页设计器有图形设计视图、源视图和拆分视图,如图1-16所示。设计视图用于在网页上指定控件和其他项的位置,可以从工具箱中拖动控件并将其置于设计图面中;源视图用于显示文件或文档的源代码,支持编码帮助功能,例如IntelliSense、可折叠代码节、重构及代码段插入等。此外还有一些其他功能,如自动换行、书签和显示行号等;拆分视图可以用来同时查看文件的图形和代码视图。
图1-16 ASP.NET网页设计器
1.3.5 工具箱
工具箱中包括可添加到Visual Studio项目中项的图标,可以单击“视图”→“工具箱”命令打开。工具箱可以停靠在集成开发环境主窗口中,根据需要可以将其设置为打开或自动隐藏状态。
在设计模式下可以将工具箱中的图标拖放到设计视图中,或双击图标来添加控件,也可以将其粘贴到Visual Studio集成开发环境的代码编辑器中。每项操作都会添加基础代码,以在活动项目文件中创建工具箱项的实例。
根据当前处理的项目和文件的类型不同,工具箱包含的项也有所不同。如图1-17所示分别为用于Windows窗体和ASP.NET网页的控件。
图1-17 工具箱
工具箱由若干个选项卡组成,单击可展开选项卡,已打开的选项卡可通过单击折叠起来。
1.3.6 属性窗口
使用属性窗口可以查看和编辑位于编辑器和设计器中选定对象的设计时属性及事件,以及文件、项目和解决方案的属性。属性窗口可以单击“视图”→“属性”命令打开。
如图1-18所示分别为Windows窗体的属性和位于ASP.NET网页中文本框的属性。属性窗口由组合框、工具栏按钮、属性列表及“说明”窗格组成。
图1-18 属性窗口由组合框、工具栏按钮、属性列表及“说明”窗格组成
(1)“对象名”组合框:列出活动编辑器或设计器中的对象并且显示当前所选对象。当选择多个对象时,不显示对象名,只显示所有选定对象的通用属性。
(2)“按分类顺序”:按类别列出选定对象的所有属性及其值,折叠类别以减少可见属性数,类别按字母顺序列出。通过单击类别名左边的 或减号 可以展开或折叠类别。
(3)“按字母顺序”:按字母顺序对选定对象的所有设计时属性和事件排序。若要编辑可用的属性,单击其右边的单元格并输入更改内容。
(4)“属性”:显示对象的属性。很多对象的事件也可以使用属性窗口来查看。
(5)“属性页”:显示选定项的“属性页”对话框或“项目设计器”,“属性页”显示“属性”窗口中可用属性的子集、同一集合或超集。使用该按钮可以查看和编辑与项目的活动配置相关的属性。
(6)“事件”:显示对象的事件。
(7)属性列表:位于工具栏与“说明”窗格之间。根据特定属性的需要,编辑字段有不同类型,包括编辑框、下拉列表,以及与自定义编辑器对话框的链接。
(8)“说明”窗格:显示属性的属性类型和简短说明,使用快捷菜单中的“说明”命令可以关闭或打开此窗格。
1.3.7 代码编辑器
在IDE中可以使用下列方法之一来打开代码编辑器。
(1)在解决方案资源管理器中单击某个文件并单击工具栏中的“查看代码”按钮,如图1-19所示。
图1-19 “查看代码”按钮
(2)对于Windows窗体应用程序或ASP.NET Web应用程序,在设计器窗口中双击窗体或页面的空白处或其中的某个控件,或者选择窗体或网页或其中的某个控件,然后在属性窗口中单击“事件”按钮 并双击事件名称右边的单元格,如图1-20所示。
图1-20 事件名称右边的单元格
如图1-21所示为在创建Windows窗体应用程序时打开的代码编辑器。
图1-21 代码编辑器
代码编辑器是编写源代码的字处理程序,它为C#语法和 .NET Framework提供了广泛支持,主要体现在以下几个方面。
(1)IntelliSense:一组相关功能的名称,旨在尽量减少查找帮助所需的时间,有助于更加准确、高效地输入代码。这些功能都提供了输入的语言关键字、.NET Framework类型和方法签名的基本信息,这些信息会显示在工具提示、列表框和智能标记中。其中的功能如下。
● 完成列表:当输入源代码时,IntelliSense将显示一个包含所有C#关键字和 .NET Framework类的列表框。如果在其中找到了与输入的名称相匹配的项,将选择此项;如果选定的项即需要的项,只需按Tab键,IntelliSense便会完成名称或关键字的输入。
● 快速信息:将指针悬停在一个 .NET Framework类型上时,IntelliSense将显示包含该类型基本文档的快速信息工具提示。
● 列出成员:输入一个 .NET Framework类型和点运算符(.),IntelliSense将显示包含该类型各成员的列表框。选择并按Tab键后,IntelliSense将输入该成员名称。
● 参数信息:输入方法名称和左括号,IntelliSense会显示参数信息提示工具,其中显示此方法的参数的顺序和类型。如果已重载此方法,可以在所有已重载的签名中上下滚动查找。
● 添加using:有时可能会试图为名称并未充分限定的 .NET Framework类创建实例,在这种情况下,IntelliSense会在无法解析的标识符后面显示智能标记。单击此智能标记,IntelliSense会显示using指令的列表,这些指令使该标识符可以被解析。IntelliSense会将从列表中选择的指令添加到源代码文件的顶部,可以在当前位置继续编码。
(2)重构:随着基本代码在开发项目过程中的不断增大和演变,有时需要更改使其更具有可读性或可移植性。例如,可能需要将一些方法拆分成更小的方法,或更改方法参数,或重命名标识符。在代码编辑器中用鼠标右键单击即可访问重构功能,完成所有这些操作,比传统工具(如搜索和替换)更便捷、更智能且更彻底。
(3)代码段:常用的C#源代码的小单元,只需几次击键即可准确、快速地输入。在代码编辑器中用鼠标右键单击即可访问代码段菜单,可以在Visual C#提供的多个代码段中浏览,或者创建自己的代码段。
(4)波浪下画线:可以即时反馈输入代码时发生的错误。红色的波浪下画线标识语法错误,例如,缺少分号或大括号不匹配;绿色的波浪下画线标识潜在的编译器警告;而蓝色的波浪下画线标识编译器错误。
(5)可读性帮助:包括设置代码格式,显示大纲和代码着色。
● 设置代码格式:按下“;”或“}”键,或者将代码粘贴到代码编辑器中后自动设置这些代码的格式。
● 显示大纲:代码编辑器会自动将命名空间、类和方法视为可折叠区域,以便于查找和读取源代码文件的其他部分。还可以在代码周围添加#region指令和#endregion指令,创建自己的可折叠区域。
● 代码着色:在C#源代码文件中为不同类别的标识符使用不同的颜色。
1.3.8 对象浏览器
在IDE中使用对象浏览器可以选择和检查可用于项目的符号,既可以查看不同组件中的对象,包括命令空间、类、结构、接口、类型和枚举等,也可以查看对象的成员,包括属性、方法、事件、变量、常量及枚举项等。
要打开对象浏览器,执行下列操作之一。
(1)单击“视图”→“对象浏览器”命令。
(2)单击标准工具栏中的“对象浏览器”按钮 。
(3)按组合键Ctrl+Alt+J。
对象浏览器如图1-22所示,其中由3个窗格组成,即位于左侧的“对象”窗格、位于右上侧的“成员”窗格和位于右下侧的“说明”窗格。
图1-22 对象浏览器
“对象”窗格中的图标用于标识分层结构,如 .NET Framework和COM组件、命名空间、类型库、接口、枚举和类,通过展开这些结构可以显示其成员的排序列表;“成员”窗格中列出了属性、方法、事件、变量、常量和包含的其他项;“说明”窗格中显示有关“对象”或“成员”窗格中选定项的详细信息。
浏览范围可以缩小到正在开发的项目及其中引用的组件,也可以展开以包括整个 .NET Framework、安装在计算机上的所有COM组件,以及可访问的所有外部组件,还可以指定要浏览的自定义文件夹集。
1.4 创建第1个Visual C#应用程序
本节通过IDE来创建第1个C#解决方案并在其中分别添加4种不同类型的项目,即控制台应用程序、Windows窗体应用程序、WPF应用程序及ASP.NET Web应用程序,以便进一步说明IDE中的界面元素,并初步说明Visual C#的编程步骤。
1.4.1 创建C#控制台应用程序
使用C#语言可以创建在命令行控制台接收输入并显示输出的应用程序,这些应用程序是最简单形式的C#程序。其用户界面很简单,完全是在命令行执行其所有的输入和输出。对于极少需要或不需要用户交互的实用工具程序十分有用,对于快速测试语言功能和学习C#语言开发也非常理想。
【例1-1】创建一个C#控制应用程序,用于列出E驱动器根目录下的所有文件及其字节数,程序运行结果如图1-23所示。
图1-23 程序运行结果
【设计步骤】
(1)启动IDE,然后单击“文件”→“创建”→“项目”命令,显示如图1-24所示的“新建项目”对话框。
图1-24 “新建项目”对话框
(2)通过执行以下操作创建一个基于.NET Framework 3.5的命令行应用程序项目。
● 在右上方的下拉列表框中选择项目面向的 .NET Framework版本为“.NET Framework 3.5”。
● 在“项目类型”下拉列表框中选择“Visual C#”选项。
● 在“模板”下拉列表框中选择“控制台应用程序”模板。
● 在“名称”文本框中输入项目的名称为“ConsoleApplication1-01”。
● 在“位置”下拉列表框中输入新项目文件夹为“F:\Visual C sharp 2008\chapter01”。
● 在“解决方案名称”下拉列表框中输入新解决方案的名称为“chapter01”。
● 选中“创建解决方案的目录”复选框。
(3)单击“确定”按钮。
提示
为了帮助用户有效地管理开发工作所需的项(如引用、数据连接、文件夹和文件),Visual Studio提供了两类容器,即解决方案和项目。在本书中,为每个上机练习将创建一个项目,同一章中的所有项目包含在同一个解决方案中。例如,在第1章中解决方案名称为“chapter01”,第1个控制台应用程序项目名称为“ConsoleApplication1-01”,第1个Windows窗体应用程序项目名称为“WindowsFormsApplication1-01”,第1个Web应用程序项目名称为“WebApplication1-01”等。
创建解决方案和项目后,解决方案资源管理器如图1-25所示。从图中可以看出,目前解决方案chapter01中只包含一个项目,即控制台应用程序项目ConsoleApplication1-01。而且该项目只包含一个C#程序源文件,其文件名为“Program.cs”。
图1-25 解决方案资源管理器
默认情况下,IDE会在代码编辑器中打开源文件Program.cs,如图1-26所示。
图1-26 打开的源文件Program.cs
(4)在包含Main方法的方法体的花括号中输入以下代码(其中以“//”开头的是注释):
// Console类位于System命名空间,表示控制台应用程序的标准输入流、输出流和错误流 // Console.WriteLine方法将指定的数据(后跟当前行终止符)写入标准输出流 // "\n"为转义字符,表示换行符(#xA) Console.WriteLine("以下是E驱动器根目录下的所有文件:\n"); // DirectoryInfo类位于System.IO空间,该类公开用于创建、移动和枚举目录和子目录的实例方法 // 通过DirectoryInfo类的构造方法在指定的路径中初始化DirectoryInfo类的新实例 // 字符“@”表示不处理字符串中的转义字符 System.IO.DirectoryInfo dir =new System.IO.DirectoryInfo(@"E:\"); // "\t"为转义字符,表示制表符(#x9) Console.WriteLine("文件名\t\t文件大小"); Console.WriteLine("--------------------------------"); // foreach语句为数组或对象集合中的每个元素重复一个嵌入语句组,用于循环访问集合以获取所需信息 // FileInfo类位于System.IO空间,提供创建、复制、删除、移动和打开文件的实例方法 // DirectoryInfo类的GetFiles用于返回当前目录与给定模式匹配的文件列表 foreach (System.IO.FileInfo file in dir.GetFiles("*.*")) { // 调用Console.WriteLine时,用{0}、{1}等表示占位符;运行时占位符将被替换为相应的参数值 // FileInfo类的Name和Length属性分别用于获取文件名和文件大小(字节) Console.WriteLine("{0}\t{1}字节",file.Name, file.Length); }
(5)单击标准工具栏中的“全部保存”按钮,保存所有文件。
(6)若要运行程序,单击“调试”→“开始执行(不调试)”命令,或按Ctrl+F5组合键。
(7)显示运行结果,按任意键结束程序运行,返回IDE。
提示
若要运行程序,也可以单击“调试”→“启动调试”命令,或者单击标准工具栏中的“启动调试”按钮 ,或者按下F5键。不过,当使用这些方法运行控制台应用程序时会发现命令行窗口出现后立即消失,无法看清楚程序的运行结果。为了能够观察程序的运行结果,可以在Main方法的方法体最后添加一个方法调用“Console.ReadLine();”,使程序在按Enter键之前暂停。如果要创建始终从命令行控制台中使用的命令行实用工具,则可以省略调用ReadLine()方法。
1.4.2 创建C# Windows窗体应用程序
Windows窗体特别适合于具有丰富图形用户界面的应用程序快速开发方案,它提供了构成标准Windows应用程序用户界面的各个组件,如对话框、菜单、按钮及其他控件,而这些控件只是 .NET Framework类库中的类。使用Visual C#可以创建运行于 .NET Framework上的基于Windows的客户端应用程序,使用Windows窗体设计器可以创建自己的用户界面并访问其他设计和运行时功能。
【例1-2】创建一个Windows窗体应用程序,用于实现Web浏览器的功能。要求运行程序时打开主页,并且可以通过菜单对网站进行导航(打开主页、前进及后退)。也可以在组合框中选择或输入一个网址并单击“转到”按钮以打开指定的网站,程序运行结果如图1-27所示。
图1-27 程序运行结果
【设计步骤】
(1)打开解决方案chapter01。
(2)单击“文件”→“添加”→“新建项目”显示如图1-28所示的“新建项目”对话框。
图1-28 “新建项目”对话框
(3)通过执行以下操作创建一个基于.NET Framework 3.5的Windows窗体应用程序项目并将其添加到解决方案chapter01中。
● 在右上方的下拉列表框中选择项目面向的 .NET Framework版本为“.NET Framework 3.5”。
● 在“项目类型”下拉列表框中选择“Visual C#”选项。
● 在“模板”下拉列表框中选择“Windows窗体应用程序”模板。
● 在“名称”文本框中输入项目的名称为“WindowsFormsApplication1-01”。
● 在“位置”下拉列表框中指定存储位置为“F:\Visual C sharp 2008\chapter01”,这样新建项目将会保存F:\Visual C sharp 2008\chapter01\ WindowsFormsApplication1-01文件夹中。
(4)单击“确定”按钮。
(5)为解决方案设置启动项目。在解决方案资源管理器中用鼠标右键单击新建的Windows窗体应用程序项目WindowsFormsApplication1,然后单击快捷菜单中的“设置为启动项目”命令,如图1-29所示。
图1-29 “设置为启动项目”命令
(6)设置窗体标题。在窗体设计器窗口中单击名为“Form1”的Windows窗体。然后在属性窗口中设置其Text属性为“Web浏览器”,如图1-30所示。
图1-30 设置Text属性
(7)在窗体中创建菜单。在工具箱中展开“菜单和工具栏”选项卡。将MenuStrip控件(如图1-31所示)拖到窗体中,在窗体的顶部创建一个默认菜单。
图1-31 MenuStrip控件
(8)设置菜单项名称。在显示“请在此处键入”的文本框中输入菜单名称,在本例中为“导航”。按Enter键,将出现新的空文本框以创建其他菜单和菜单项。在位置较低的文本框中输入“主页”,按Enter键,显示更多的文本框。输入“返回”,按Enter键。并输入“向前”,如图1-32所示。利用属性窗口,将“主页”、“后退”及“向前”菜单项的Name属性分别设置为homeToolStripMenuItem、goBackToolStripMenuItem和goForwardToolStripMenuItem。
图1-32 设置菜单项
(9)添加和设置组合框控件。在工具栏中展开“公共控件”选项卡。将ComboBox控件拖放到窗体菜单下方,如图1-33所示。在窗体中选择组合控件ComboBox,在属性窗口中单击Items属性框右边的按钮,如图1-34所示。当显示如图1-35所示的“字符串集合编辑器”对话框,在文本区域中输入一些网址(每行对应于组合框中的一项),以填充组合框ComboBox。
图1-33 选择ComboBox控件
图1-34 设置Items属性
图1-35 “字符串集合编辑器”对话框
(10)添加按钮。在工具箱的“公共控件”选项卡中把Button控件拖动到窗体中组合框ComboBox的右边,如图1-36所示。利用属性窗口将该按钮的Name属性更改为goButton,将Text属性设置为“转到”,如图1-37所示。
图1-36 添加Button控件
图1-37 设置按钮的属性
(11)为添加Web浏览器控件。在工具栏“公共控件”选项卡中把WebBrowser控件拖动到窗体上组合框ComboBox的下方,如图1-38所示。利用属性窗口将其Anchor属性设置设为“Top、Bottom、Left、Right”,使WebBrowser控件在调整应用程序窗口的大小时适当地调整其大小,如图1-39所示。
图1-38 添加WebBrowser控件
图1-39 设置WebBrowser控件的属性
至此,Web浏览器应用程序用户界面已设计完成,其布局效果如图1-40所示。
图1-40 Web浏览器应用程序用户界面的布局效果
(12)在代码编辑器中编写以下程序代码(其中粗体字为用户自定义代码,其余代码由IDE生成):
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; // Form类包含在此命名空间 namespace WindowsFormsApplication1 01 // 声明命名空间 { public partial class Form1 : Form // 定义分部类 { public Form1() // 类的构造函数 { InitializeComponent(); } // 单击“转到”按钮时执行以下方法(事件处理程序) private void goButton Click(object sender, EventArgs e) { webBrowser1.Navigate(new Uri(comboBox1.SelectedItem.ToString())); } // 加载窗体时执行以下方法(事件处理程序) private void Form1 Load(object sender, EventArgs e) { comboBox1.SelectedIndex =0; webBrowser1.GoHome(); } // 单击“导航”→“主页”命令时执行以下方法(事件处理程序) private void homeToolStripMenuItem Click(object sender, EventArgs e) { webBrowser1.GoHome(); } // 从“导航”→“后退”命令时执行以下方法(事件处理程序) private void goBackToolStripMenuItem Click(object sender, EventArgs e) { webBrowser1.GoBack(); } // 从“导航”→“前进”命令时执行以下方法(事件处理程序) private void goForwardToolStripMenuItem Click(object sender, EventArgs e) { webBrowser1.GoForward(); } } }
(13)保存所有文件,按F5键编译并运行应用程序,测试程序的各项功能。
1.4.3 创建C# WPF应用程序
WPF是下一代显示系统,作为一种Microsoft Windows Vista托管技术,可以用来增强可视化效果,以及显示应用程序用户界面和多媒体内容,以生成能带给用户震撼视觉体验的Windows客户端应用程序。使用WPF技术可以创建广泛的独立应用程序及浏览器承载的应用程序。
WPF作为 .NET Framework类型的一个子集存在,这些类型大多位于System.Windows命名空间中。可以使用C#编程语言来实例化类、设置属性、调用方法并处理事件。
创建WPF应用程序项目时,除了具有设计器、属性窗口和工具箱以外,IDE中还提供了一个包含XAML(eXxtensible Application Markup Language,可扩展应用程序标记语言)的窗口。XMAL语言可以用来简化为WPF编程模型创建用户界面的过程,可以在声明性XAML标记中创建可见的用户界面元素,然后使用代码隐藏文件将用户界面定义与运行时逻辑相分离。不过,也可以像创建Windows窗体应用程序一样,通过将控件从工具箱中拖动到设计视图中来设计WPF应用程序。
本节通过一个例子说明如何在IDE中使用C#语言来创建WPF应用程序。
【例1-3】使用WPF技术创建一个绘图程序,允许用户通过拖动鼠标在窗体中画图。单击“清除”按钮可清除当前图形,单击“关闭”按钮可关闭窗口。程序运行结果如图1-41所示。
图1-41 程序运行结果
【设计步骤】
(1)打开解决方案chapter01,单击“文件”→“添加”→“新建项目”命令,显示如图1-42所示的“新建项目”对话框。
图1-42 “新建项目”对话框
(2)通过执行以下操作创建一个基于 .NET Framework 3.5的WPF应用程序项目并将其添加到解决方案chapter01中。
● 在右上方的下拉列表框中选择项目面向的 .NET Framework版本为“.NET Framework 3.5”。
● 在“项目类型”下拉列表框中选择“Visual C#”选项。
● 在“模板”下拉列表框中选择“WPF应用程序”模板。
● 在“名称”文本框中输入项目的名称为“WpfApplication1-01”。
● 在“位置”下拉列表框中指定目标文件夹为“F:\Visual C sharp 2008\chapter01”,这样新建项目将会保存在F:\Visual C sharp 2008\chapter01\WpfApplication1-01文件夹中。
(3)单击“确定”按钮。Visual C#为项目创建一个按项目标题命名的新文件夹,然后在设计视图中显示标题为“Window1”的新WPF窗体(文件扩展名为“.xaml”)。随时都可以通过用鼠标右键单击设计视图或“XAML”窗口并单击快捷菜单中的“查看代码”命令切换到“代码”视图(文件扩展名为“.xaml.cs”)。默认情况下,XAML编辑器显示在设计器之下(混合视图),但也可以通过用鼠标右键单击设计视图并单击快捷菜单中的“查看XAML”命令以单一窗格形式查看XAML标记。在设计视图中看到的WPF窗口是将在应用程序启动时打开窗口的可视表示形式,在该视图中可以将工具箱中的控件拖动到WPF窗口中。然后Visual C#会自动创建一些代码,以便在程序运行时将该控件置于适当的位置。
(4)为解决方案设置启动项目。在解决方案资源管理器中用鼠标右键单击新建的WPF应用程序项目WpfApplication1,然后单击快捷菜单中的“设置为启动项目”命令,如图1-43所示。
图1-43 “设置为启动项目”命令
(5)设置WPF窗口标题。在设计视图中单击WPF窗口。然后在属性窗口中将其Title属性设置为“绘图板”,如图1-44所示。
图1-44 设置为“绘图板”
(6)调整WPF窗口大小。在设计视图中拖动WPF窗口的边或角以改变窗口的大小(这将改变XAML标记中Window标记的Height和Width属性的值),如图1-45所示。
图1-45 调整WPF窗口大小
(7)为显示墨迹笔画的区域,用鼠标右键单击工具箱并单击快捷菜单中的“选择项”命令,如图1-46所示,显示“选择工具箱项”对话框。
图1-46 “选择项”命令
(8)选择“WPF组件”选项卡,如图1-47所示选择“InkCanvas”选项,然后单击“确定”按钮。
图1-47 “选择InkCanvas选项”
(9)从工具箱中把InkCanvas控件拖到WPF窗口中(如图1-48所示),然后利用属性窗口设置其属性,如图1-49所示。
图1-48 添加InkCanvas控件
图1-49 设置InkCanvas控件的属性
(10)添加按钮。从工具箱中将两个Button控件拖动到WPF窗口中控件InkCanvas1的下方。将左侧按钮的Name属性设置为clearButton,将其内容设置为“清除”;将右侧按钮的Name属性设置为closeButton,将其内容设置为“关闭”。
至此,WPF窗口用户界面已经设计完成,相应的XAML标记代码如下:
<Window x:Class="WpfApplication1.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="绘图板" Height="327" Width="492" Background="SteelBlue"> <Grid> <InkCanvas Margin="9,9,9,45" Name="inkCanvas1" Background="LightYellow" /> <Button Height="23" HorizontalAlignment="Left" Margin="107,0,0,10" Name="clearButton" VerticalAlignment="Bottom" Width="75">清除</Button> <Button Height="23" HorizontalAlignment="Right" Margin="0,0,116,10" Name="closeButton" VerticalAlignment="Bottom" Width="75">关闭</Button> </Grid> </Window>
(11)为按钮创建事件处理程序。
● 在设计器窗口中双击“清除”按钮,然后在生成的Click事件处理程序中添加以下代码:
// 使用this关键字引用类的当前实例 // InkCanvas类的Strokes属性用于获取InkCanvas收集的墨迹Stroke对象集合 // 通过调用Clear方法移除墨迹对象集合中的所有元素,即擦除当前绘制的图形 this.inkCanvas1.Strokes.Clear();
● 在设计器窗口中双击“关闭”按钮,在生成的Click事件处理程序中添加以下代码:
// 关闭WPF窗口 this.Close();
(12)保存所有文件,按F5键运行程序并测试程序的功能。
● 通过拖动鼠标绘制图形。
● 单击“清除”按钮擦除图形,单击“关闭”按钮退出程序。
1.4.4 创建ASP.NET Web应用程序
当使用Visual Studio 2008创建ASP.NET Web应用程序时,实际上是在使用IDE的一部分,也称为“Visual Web Developer”。它拥有可以在网页上创建用户界面的设计器,以及可以进行Web开发和网站管理的其他工具。当用户使用C#创建Web控件的代码隐藏页时,就是在使用C#代码编辑器,并且可以像在Visual C#中那样,在Visual Web Developer中使用编辑器的所有功能。
本节通过一个例子说明如何使用Visual C#创建ASP.NET Web应用程序。
【例1-4】创建一个ASP.NET Web网站,当打开网站首页时显示一行欢迎信息,如图1-50所示。如果未输入用户名而单击“确定”按钮,则提示输入用户名,如图1-51所示;如果输入用户名并单击“确定”按钮,则显示欢迎信息,如图1-52所示。
图1-50 欢迎信息
图1-51 提示输入用户名
图1-52 欢迎信息
【设计步骤】
(1)打开解决方案chapter01。
(2)单击“文件”→“添加”→“新建项目”命令,显示如图1-53所示的“添加新项目”对话框。
图1-53 “添加新项目”对话框
(3)通过执行以下操作创建一个ASP.NET Web应用程序并添加到解决方案chapter01中。
● 在右上方的下拉列表框中选择项目面向的 .NET Framework版本为“.NET Framework 3.5”。
● 在“项目类型”下拉列表框中选择“Visual C#”选项。
● 在“模板”下拉列表框中选择“ASP.NET Web应用程序”模板。
● 在“名称”文本框中输入项目的名称为“WebApplication1-01”。
● 在“位置”下拉列表框中指定目标文件夹为“F:\Visual C sharp 2008\chapter01”,这样新建项目将保存在F:\Visual C sharp 2008\chapter01\WebApplication1-01文件夹中。
(4)单击“确定”按钮。
(5)为设置启动项目,在解决方案资源管理器中选择项目WebApplication1,然后单击“项目”→“设置为启动项目”命令。
(6)利用网页设计器完成ASP.NET网页Default.aspx的设计。
● 为设置网页标题,在网页设计器中单击页面。利用属性窗口将DOCUMENT对象的Title属性设置为“欢迎页”,如图1-54所示。
图1-54 设置网页标题
● 输入“用户名:”,在这些文字右边添加一个TextBox控件,并利用属性窗口将其ID属性设置为usernameTextBox。
● 在文本框右边添加一个Button控件,并利用属性窗口将其ID属性设置为okButton,Text属性设置为“确定”。
● 连续两次按Enter键,添加一个Label控件。利用属性窗口将其ID属性设置为msgLabel,Text属性设置为“欢迎您进入Visual C#编程世界!”。
至此,ASP.NET网页用户界面设计完成,其布局效果如图1-55所示。
图1-55 ASP.NET网页布局效果
(7)为按钮编写事件处理程序。在网页设计器窗口中双击“确定”按钮,然后在生成的Click事件处理程序中添加以下代码:
if (usernameTextBox.Text != "") { msgLabel.ForeColor = System.Drawing.Color.Blue; msgLabel.Text = usernameTextBox.Text + "用户,您好!"; } else { msgLabel.ForeColor = System.Drawing.Color.Red; msgLabel.Text = "用户名不能为空!"; }
(8)按Ctrl+Shift+S组合键保存所有文件。
(9)按Ctrl+F5组合键运行应用程序,ASP.NET开发服务器将自动启动并动态分配一个端口号。在浏览器中打开ASP.NET网页Default.aspx,然后通过以下操作测试该网页。
● 不输入用户名,单击“确定”按钮,显示红色提示信息。
● 输入用户名,然后单击“确定”按钮,显示欢迎信息。