本书主要内容.使用Visual Baisc进行面向对象编程的基础概念,包括类、结构体、继承、接口以及泛型。.  应用程序与其环境交互的方式,保存和加载外部源中的数据,以及使用标准对话框控制。. 声明子例程、函数、泛型、类和其他重要语言概念的语法。. .NET Framework 3.0介绍(包含在光盘上)。本书读者对象本书适合于所有层次的程序员。无论是希望学Visausl Basic 2005的程序员,还是已经Visausl Basic 2005并且希望获得一些有用的提示、技巧和语言细节的程序员,都可以从本书中获得有用的信息。内容简介本书是知名的VB专家  Rod Stephens奉献给初级程序员的学习指南,同时也是一个有丰富经验程序的编程心得与忠告。本书的基础部分采用手册式的写作方法,内容几乎遍及Visausl Basic 所有大大小小的知识点滴。而且层次分明,条理清楚,是初级读者绝佳的入门指导。提高部分则从面向对象编程、使用图形及与环境交互等方面阐述了Visausl Basic 编程的实质性内容,其中提供了大量的示例代码,这不仅可以提高读者的编程技能,读者更能从中学到大量的编程技巧,领悟编程精髓。附录部分提供了Visausl Basic 2005语言的参考,以便读者随时查找有用的信息。
Visual Basic的出现,从根本上改变了Windows编程。Visual Basic代替程序员处理Windows事件的许多复杂细节,使程序员只关注于应用程序本身,而不需要关注Windows编程方面的琐事。 遗憾的是,早期版本的Visual Basic存在一些缺陷。对底层Windows细节的保护极大地降低了灵活性。使用Visual Basic意味着不需要处理Windows事件循环的复杂细节,但是在实际需要直接操作这些事件时就会较为困难。高级程序员仍然可以查看内部细节并在较低的级别上工作,但这会产生一定的危险。如果代码没有正确处理所有细节,它就可能使程序崩溃,并且可能使Windows自身崩溃。 Visual Basic也遵循与其他Windows编程语言(例如C++)不同的路径,它提供了较为高效的开发环境及一般较为直观的语法。然而,Visual Basic对面向对象开发的语法具有较多的限制。开发人员虽然仍然可以构建安全、可靠和可扩展的应用程序,但这需要一些经验和谨慎。 Visual Studio .NET解决了许多这样的缺点,它将Visual Basic和C++开发环境合并为一个功能更为强大的工具,增加了C#语言(发音为C-sharp),并且为这三种语言提供了一个公共的底层运行库语言,称为公共语言运行库(Common Language Runtime,CLR)。Visual Basic .NET合并了这些改动,从而使Visual Basic语言与CLR和其他语言更加保持一致。Visual Basic .NET包括了较为结构化的错误处理、声明和初始化变量的新语法、重载的函数和子例程,以及用于创建类(包括真正的继承性)的功能更为强大的模型。 Visual Basic 2005添加了新的特性,这些特性使Visual Basic成为比以往功能更为强大的语言。Visual Basic 2005包括新的语言特性,如无符号的数据类型、运算符重载及简化的逻辑运算符;对面向对象方面进行了增强,如更加灵活的属性过程可访问性、泛型及自定义事件;并且改进了编写代码的工作,如可扩展标记语言(Extensible Markup Language,XML)注释、更好的IntelliSense及代码片断。 Visual Basic 2005是Visual Basic的第二个主要发布版本。在这个版本中已经消除了第一个版本中的大多数bug,因此现在是学习该语言的最佳时机。第一个发布版本已经被证明是稳定的版本,而当前的发布版本则给Visual Basic程序员带来了新的功能。一直在观望Visual Basic .NET发展的开发人员终于有了答案,这就是Visual Basic 2005。 使用Visual Basic .NET的原因 Visual Basic程序员经常会开这样的玩笑:“Visual Basic .NET和C#之间的区别是什么?大概3个月!”这个玩笑暗示Visual Basic .NET语法更容易理解,并且使用它构建应用程序更为快速。同样,C#程序员也有自己的关于Visual Basic .NET的玩笑,也是暗示C#的功能更为强大。 实际上,Visual Basic .NET并不比C#更易于使用,而C#也并不比Visual Basic .NET功能更为强大。两种语言的基本形式非常类似。除了一些风格上的区别(Visual Basic面向代码行,而C#则使用大量大括号和分号)外,这两种语言在很多方面都非常相似。两种语言都使用Visual Studio开发环境,都提供访问支持类和工具的.NET Framework,并且都提供执行基本编程任务的类似语法。 实际上,这两种语言如此类似,以至于Microsoft的许多Web站点都将它们集中起来介绍。网页的标题就是What’s New in Visual Basic and Visual C#(Visual Basic和Visual C#的新增内容)。 这两种语言的主要区别在于风格。如果曾经使用过以前版本的Visual Basic,则或许会发现Visual Basic .NET更易于上手。如果曾经使用过C++或Java,则或许会发现C#(或者是Visual C++或Visual J#)更容易学习。 Visual Basic与其他Microsoft产品有一些联系。例如,ASP使用Visual Basic创建交互式的Web页面。Microsoft Office应用程序(Word、Excel和PowerPoint等)和许多第三方的工具使用Visual Basic for Application(VBA)作为宏编程语言。如果了解Visual Basic,您就可以在使用其他语言时处于领先地位。活动服务器页面(Active Server Pages,ASP)和Visual Basic for Application(VBA)基于.NET之前的Visual Basic版本,虽然您不会立刻就知道如何使用它们,但是如果需要学习ASP或VBA,您将会有很大的优势。 如果您是编程新手,那么Visual Basic .NET和C#都是很好的选择。笔者个人认为Visual Basic .NET可能更容易学习一些,但是这种观点可能稍微带有一些偏见,因为笔者最近一直都在使用Visual Basic。选择哪种语言并不是大问题,您可以在后面很容易地改为使用另一种语言。当然,如果您已经购买了这本书,则应该坚持使用Visual Basic。 适合学习本书的读者 本书的读者对象是所有层次的程序员。本书从基础开始描述Visual Basic .NET语言,因此读者不需要学习该语言的以前版本。本书也介绍了许多中等主题和高级主题。本书对于各个主题的介绍都足够深入,即使是有经验的开发人员也会发现新的提示、技巧及语言细节。已经掌握了该语言的读者,仍然可能通过本书发现一些有用的信息,并且本书的参考附录将帮助您非常容易地查找已经遗忘的细节。 本书中前面的一些章节快速描述了较为基础的内容。如果之前从来没有进行过编程并且不了解计算机,就可能需要首先阅读一些基础的书籍。如果是基本了解计算机的初学者,就可以没有多少困难地通过本书学习Visual Basic .NET。 如果已经使用其他任何语言进行过编程,就应该熟悉一些基础内容,例如变量声明、数据类型和数组,因此应该可以毫无困难地学习本书。本书的参考附录可以很好地帮助您将已经了解的语言转换为对应的Visual Basic语法。 本书的结构 本书从逻辑上可以划分为4个部分加上附录。下面简要描述每一部分中的章节。如果您是有经验的程序员,可以使用这些说明来决定跳过哪些章节及详细学习哪些章节。 第1部分 开始学习 这一部分的章节介绍Visual Basic .NET编程的基础知识,包括开发环境、基本的程序语法及如何与标准控件交互。较为高级的主题包括如何构建自定义的控件及如何实现拖动和释放操作。 第1章“IDE”描述了集成的开发环境(IDE)。解释了IDE的窗口及如何定制IDE,并且介绍了一些工具,在编写Object Browser和代码窗口的IntelliSense等特性时,这些工具可提供帮助。 第2章“控件概述”描述了一般的控件概念。介绍了如何向窗体添加控件,如何在设计和运行时读取和改变控件的属性,以及如何使用一些较为复杂的控件属性(如Dock和Anchor)。同时也展示了如何捕获和响应事件,以及如何通过代码改变事件处理程序。 第3章“程序和模块结构”分析了简单的Visual Basic程序,并且解释了Visual Studio创建的结构。描述了程序的代码区域和注释,并且说明如何使用类似的技术使代码更易于阅读和管理。 第4章“数据类型、变量和常量”解释了Visual Basic提供的标准数据类型。解释了如何声明和初始化变量和常量,并且介绍了变量作用域。讨论了值类型和引用类型、按值或按引用传递参数及动态创建参数变量。这一章还介绍了如何创建数组、枚举类型和结构体。 第5章“运算符”描述了程序用于执行计算的运算符。这些运算符包括算术运算符(+、*、\)、字符串运算符(&)及Boolean运算符(And、Or)。介绍了在表达式结合多种类型的运算符(如算术运算符和Boolean运算符)时引发的运算符优先级和类型转换问题。 第6章“子例程和函数”解释了如何使用子例程和函数将程序分解为多个可管理的部分。同时也描述了子例程重载和作用域。 第7章“程序控制语句”描述了Visual Basic程序用于控制代码执行的语句。这些语句包括判定语句(如If Then Else、Select Case、IIF和Choose等)及循环语句(如For Next、For Each、Do While、While Do和Repeat Until等)。 第8章“错误处理”解释了错误处理和调试技术。描述了Try Catch结构的错误处理程序,以及从早期版本的Visual Basic继承而来的较老的On Error语句。还讨论了程序在捕获到错误时可能执行的一般操作,并且描述了防止错误发生及使实际发生的错误显而易见的技术。 第9章“Windows窗体控件简介”解释了可以在Windows窗体上使用的标准Visual Basic控件。并且描述了这些控件提供的最有用的属性、方法和事件,并且给出如何使用它们的示例。还描述了这些控件互相依赖的情况。例如,一些控件(如ToolBar)从关联的ImageList控件中获得图像。 第10章“窗体”解释了窗体的一般用途。说明了如何构建部分透明的窗体以用作启动画面、登录窗体和About窗体。描述了窗体光标和图标,如何重写WndProc以截获窗体的Windows消息,如何建立多文档界面(MDI)应用程序,以及如何实现最近使用(MRU)文件列表。本章没有详细介绍窗体对象的所有属性、方法和事件,这些内容都在附录H中进行描述。 第11章“数据库控件和对象”解释了如何使用Visual Basic的标准数据库控件。这些数据库控件包括处理数据库连接的数据库连接组件、保存应用程序中数据的DataSet组件,以及将数据在数据连接和DataSet之间移动的数据适配器控件。 第12章“自定义控件”介绍了如何构建自己的自定义控件,可以在后面将这些控件用于其他应用程序中。还介绍了创建自定义控件的三种主要方法:派生、复合及从头开始构建。本章也提供了一些示例,可以将这些示例用作创建自己控件的起点。 第13章“拖动、释放和剪贴板”解释了Visual Basic程序如何支持拖放操作。说明了Visual Basic如何开始到另一个应用程序的拖动操作,如何响应由另一个应用程序开始的拖动操作,以及如何接收来自于另一个应用程序的释放操作。同时也解释了如何将数据复制到剪贴板及如何从剪贴板中复制数据。使用剪贴板类似于某种类型的拖放操作,因此这些主题很自然地放在一章中进行介绍。 第2部分 面向对象的编程 这一部分的章节解释使用Visual Basic进行面向对象编程(OOP)的基本概念,并且描述了一些较为重要的类和对象,可以在构建应用程序时使用这些类和对象。 第14章“OOP概念”介绍了隐藏在面向对象编程之后的基本思想。描述了OOP的三个主要特性:封装、多态和继承,解释了这些特性的优点,并且说明了如何在Visual Basic中利用它们。 第15章“类和结构体”解释了如何声明和使用类和结构体。介绍了类和结构体的概念,并且描述了它们之间的区别。还展示了基本的声明语法,并且说明了如何创建类和结构体的实例。本章也介绍了一些较为复杂的类问题(如私有类的作用域、声明事件及共享的变量和方法)。 第16章“命名空间”介绍了命名空间。说明了Visual Studio如何使用命名空间分类代码并防止名称冲突,描述了项目的根命名空间,并说明了Visual Basic如何使用命名空间解析名称(例如函数名和类名),以及如何将命名空间添加到应用程序中。 第17章“集合类”解释了包括在Visual Studio中的类,可以使用这些类保存对象组。本章描述了各种集合、字典、队列及栈类,说明了如何建立这些类的强类型版本,并且提供关于在不同的情况下决定使用哪个类的指导。 第18章“泛型”解释了模板,可以使用模板构建新的类以操作特定的数据类型。例如,可以构建泛型二元树,在后面使用该二元树构建类以表示自定义订单、雇员或工作项的二元树。 第3部分 图形 这一部分的章节描述了Visual Basic .NET中的图形。解释了图形设备接口(GDI+)例程,程序使用这些例程在Visual Basic中绘制图像。解释了如何绘制直线和文本,如何绘制和填充圆和其他形状,以及如何加载、操作和保存位图图像。同时也解释了如何生成打印输出及如何发送报表给屏幕或打印机。 第19章“绘图基础”解释了在Visual Basic .NET中绘制图形的基本原理。描述了图形命名空间及它们包含的类,详细介绍了其中最重要的类Graphics。也描述了Paint事件处理程序及其他事件,程序应该使用这些事件保持更新它的图形。 第20章“画刷、画笔和路径”解释了除了Graphics之外最重要的图形类:Pen和Brush。说明了如何使用Pen绘制实线、虚线、带有自定义虚线样式的直线,以及带有自定义纵向条纹样式的直线。同时展示了如何使用Brush在区域中填充颜色、阴影线样式、线性渐变色、遵循路径的其他渐变色及平铺的图像。本章也描述了GraphicsPath类,该类表示一系列直线、形状、曲线和文本。 第21章“文本”解释了如何绘制文本字符串,如何创建不同类型的字体,精确地确定以特定的字体绘制大文本时该字体的外观,以及使用GDI+函数简化文本的定位。描述了如何使用StringFormat对象对文本进行排列、换行和剪裁操作,以及如何读取和定义制表位。 第22章“图像处理”解释了如何加载、修改和保存图像文件,如何读写图像中的像素,以及如何以不同的文件格式(如BMP、GIF和JPEG等)保存结果。说明了如何使用图像提供自动重绘特性,以及逐个像素地操作图像,这两个操作都使用了Bitmap的GetPixel和SetPixel方法,并且都使用“不安全的”访问技术,这就使像素操作比使用普通的GDI+方法更为快速。 第23章“打印”介绍了程序发送输出给打印机的不同方法。展示了如何使用PrintDocument对象生成打印输出的数据,然后可以使用PrintDocument立刻打印数据,使用PrintDialog控件让用户选择打印机并设置它的特征,或者使用PrintPreviewDialog控件让用户在打印之前预览结果。 第24章“报表”提供了对Crystal Reports的简介,使用该工具可以相对容易地在Visual Basic中生成报表。本章介绍了Crystal Reports的基础,并且逐步介绍了构建简单报表的示例。 第4部分 与环境交互 这一部分的章节描述了应用程序如何与它的环境交互,程序如何在外部源(如系统注册表、资源文件和文本文件等)中保存和加载数据,操作计算机的屏幕、键盘和鼠标,以及通过标准对话框控件与用户交互。 第25章“配置和资源”描述了Visual Basic程序存储在运行时使用的配置和资源值的一些方法。其中一些最有用的方法包括环境变量、注册表、配置文件和资源文件。 第26章“流”解释了Visual Basic应用程序用于操作流数据的类,包括FileStream、MemoryStream、BufferedStream、TextReader和TextWriter等。 第27章“文件系统对象”描述了Visual Basic应用程序与文件系统交互的类,这些类包括Directory、DirectoryInfo、File和FileInfo,它们简化了创建、检查、移动、重命名,以及删除目录和文件的操作。 第28章“有用的命名空间”描述了.NET Framework定义的一些最常见的命名空间。概述了一些最重要的System命名空间,并且给出了演示正则表达式、XML、加密、反射和Direct3D的较为详细的示例。 附录 本书的附录提供了Visual Basic .NET语言的分类参考。可以使用这些附录快速回顾特定命令的语法、从某个例程的一些重载版本中进行选择或者重新回忆特定类可以执行的操作。本书前面的章节提供了更多的上下文,并且解释了如何执行特定的任务,以及一种方法比另一种方法更可取的原因。 附录A“有用的控件属性、方法和事件”描述了对于许多不同类型的控件非常有用的属性、方法和事件。 附录B“变量声明和数据类型”总结了声明变量的语法。该附录也给出了基本数据类型所允许值的大小和范围。 附录C“运算符”总结了标准运算符,如+、<<、Or Else和Like等。该附录也提供了运算符重载的语法。 附录D“子例程和函数声明”总结了子例程、函数和属性过程声明的语法。 附录E“控制语句”总结了控制程序流的语句,如If Then、Select Case和循环语句。 附录F“错误处理”总结了结构化和“经典的”错误处理。该附录描述了一些有用的异常类,并且提供了如何构建自定义异常类的示例。 附录G“标准控件和组件”描述了Visual Basic .NET提供的标准组件。该附录解释了在操作这些组件时最有用的属性、方法和事件。 附录H“窗体对象”描述了窗体。从非常实际的意义来说,窗体是另一种类型的组件。然而,窗体在Visual Basic应用程序中扮演了关键的角色,因此值得专门通过一个附录来进行介绍。 附录I“类和结构体”总结了声明类和结构体的语法,以及定义它们的构造函数和事件的语法。 附录J“泛型”概述了声明泛型类的语法。 附录K“图形”概述了用于在Visual Basic .NET中生成图形的对象。该附录介绍了最有用的图形命名空间。 附录L“有用的异常类”列出了Visual Basic定义的一些最有用的异常类。我们可能需要在自己的代码中抛出这些异常。 附录M“日期和时间格式说明符”概述了说明符字符,可以使用这些说明符字符格式化日期和时间。例如,这些字符要求用户以12小时时钟或24小时时钟的方式显示时间。 附录N“其他格式说明符”概述了数字和枚举类型的格式化。 附录O“Application类”概述了Application类,该类提供了控制当前应用程序的属性和方法。 附录P“My命名空间”描述了My命名空间,该命名空间提供了遍布在.NET Framework其他部分的有用特性的快捷键。该附录提供了操作应用程序、计算机硬件、应用程序窗体、资源和当前用户的快捷键。 附录Q“流”概述了Visual Basic的流类,如Stream、FileStream、MemoryStream、TextReader和CryptoStream等。 附录R“文件系统类”概述了应用程序可用于了解和操作文件系统的方法。该附录解释了传统的Visual Basic方法,如FreeFile、WriteLine和ChDir,以及较新的.NET Framework类,如FileSystem、Directory和File等。 如何使用本书 如果您是有经验的Visual Basic .NET程序员,则可以跳过本书第1部分中介绍的语言基础。您或许会发现出现在Visual Basic 2005中的一些新特性,因此不应该彻底跳过这些章节。但是,这里介绍的大多数基本语言特性都与前面的版本相同。 初步了解Visual Basic .NET的程序员和对Visual Basic .NET具有较少经验的程序员应该更加仔细地阅读这些章节。第2部分“面向对象编程”中的章节介绍了特别复杂的主题。学习关于继承和接口的所有变体可能会很容易使人产生混淆。 初学者应该花费较多的时间学习这些基础章节,因为这些章节为后面将要介绍的内容打好了基础。如果已经清楚地了解了错误处理代码的讨论,则可以较为容易地理解关于文件管理和正则表达式的讨论。 编程是一种最好通过实践来学习的技能。您可以根据喜好拿起这本书并快速阅读它,但是如果打开Visual Basic .NET开发环境并亲自实验一些程序,则更有可能牢记本书中介绍的信息。通常情况下,当笔者阅读新的编程书籍时,都会亲自完成每个示例,修改代码以查看在尝试作者没有介绍到的内容时所发生的情况。尝试新的变体并特别注意产生的错误,在一本书中很难全面地介绍所有的错误。一方面了解强类型的集合,另一方面则使用对您有意义的数据构建自己的强类型集合。 通过实践来学习这种观点可能会鼓励您跳过本书中的一些部分。例如,第1章详细介绍了交互式开发环境。在阅读本章一段时间后,您可能希望跳过一些部分并亲自开始体验该环境。非常鼓励您这样做,通过实践来学习总是好于通过阅读来学习。在对该开发环境有一些经验之后,您就可以返回并更为详细地研究第1章,从而学习较为高级的自定义开发环境技术。 本书的最后一部分是Visual Basic .NET参考。这些附录给出了关于该语言的较为简明的分类信息。您可以使用这些附录回顾特定操作的细节。例如,可以阅读第9章以学习控件用于哪些特定的目标,然后使用附录G了解特定控件的属性、方法和事件。 在工作的过程中,您也可以参考这些附录以获得关于特定的类、控件和语法的信息。例如,可以在附录J中快速查找声明泛型类的语法。如果需要关于泛型的信息,可以在第18章或联机帮助中进行查找。然而,如果只是为了重新回忆基本语法,则浏览附录J将更为快速。 必要的设备 为了阅读本书并理解其中的示例,需要一些特殊的设备。为了使用Visual Basic .NET并运行可在本书相关Web页面上找到的示例,您需要足以运行Visual Basic .NET的任何计算机。这意味着要有一台相当现代化的、快速的计算机,该计算机带有大量内存。查看Visual Basic .NET文档以了解Microsoft提出的确切需求和推荐信息。 为了构建Visual Basic .NET程序,您也需要一份Visual Basic .NET的副本。如果您有.NET之前的Visual Basic版本(如Visual Basic 6),则不要尝试运行本书中介绍的示例。Visual Basic 6和Visual Basic .NET之间的改动非常大,许多Visual Basic .NET概念并不能很好地转换为Visual Basic 6中的概念。如果对C#有一些经验,则可以较为容易地将程序转换为该语言。 然而,许多Visual Basic 2005发布版本都与Visual Basic .NET 2003和Visual Basic .NET的早期版本兼容,因此可以在Visual Basic .NET的早期版本中使用许多示例。然而,您将不能够加载从本书的Web站点上下载的示例程序,而是需要将重要的代码部分复制并粘贴到您的Visual Basic .NET版本中。 本书的附带光盘及技术支持 本书的附带光盘上包含了本书用到的示例,同时还特别包含了本书升级到Vista及.NET Framework 3.0新增加的内容(英文版),例如,UAC Security、Windows Workflow Foundation、Windows Communication Foundation、Windows Presentation Foundation、WPF控件以及Visual Basic Power Packs等内容。本书的示例稍作改动,就可以在新的环境下运行。 如果发现有错误或有任何疑问,可通过wkservice@tup.tsinghua.edu.cn将这些信息发送给我们,我们将尽可能及时处理。