求助:SYNC系统与导航仪没有系统设置问题

> 请教这段VB.net的代码是什么意思
请教这段VB.net的代码是什么意思
wangxiaodan & &
发布时间: & &
浏览:3 & &
回复:1 & &
悬赏:0.0希赛币
请问这段VB.net的代码是什么意思Private Sub main_Closing(ByVal sender As Object, ByVal e ponentModel.CancelEventArgs) Handles MyBase.Closing &
If MessageBox.Show(&是否退出?&, &确认&, MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) = Windows.Forms.DialogResult.Cancel Then &
e.Cancel = True &
e.Cancel = False &
End Sub这是一段主窗体的代码,在实现过程中,在通过了登录窗体后,都会先出现一次是否确认退出的消息框,然后选取消后才能正常进入主窗体,请问这个应该如何解决??
楼主的意思是如下面代码所描述吗?  VB.NET code  Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim check As Boolean = True
Dim Login As New LoginForm1
Login.ShowDialog()
If Login.DialogResult = Windows.Forms.DialogResult.OK And Login.flag Then
check = False
ElseIf Login.DialogResult = Windows.Forms.DialogResult.Cancel Then
Me.Close()
check = False
Loop While check
Catch ex As Exception
Private Sub main_Closing(ByVal sender As Object, ByVal e ponentModel.CancelEventArgs) Handles MyBase.Closing
If MessageBox.Show(&是否退出?&, &确认&, MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) = Windows.Forms.DialogResult.Cancel Then
e.Cancel = True
e.Cancel = False
Public Class LoginForm1
Inherits System.Windows.Forms.Form
Public flag As Boolean = False
Public Sub New()
Dim btnOk, btnCancel As New Button
AddHandler btnOk.Click, AddressOf BtnOkClick
AddHandler btnCancel.Click, AddressOf BtnCancelClick
btnOk.Text = &OK&
btnOk.Location = New Point(10, 10)
btnCancel.Text = &Cancel&
btnCancel.Location = New Point(10, 80)
Me.Controls.Add(btnOk)
Me.Controls.Add(btnCancel)
Private Sub BtnOkClick(ByVal sender As Object, ByVal e As System.EventArgs)
Me.DialogResult = Windows.Forms.DialogResult.OK
flag = True
Private Sub BtnCancelClick(ByVal sender As Object, ByVal e As System.EventArgs)
Me.DialogResult = Windows.Forms.DialogResult.Cancel
flag = False
End Classwangxiaoguangg & &
11:24:08 & &
& & (1)(0)引用
本问题标题:
本问题地址:
温馨提示:本问答中心的任何言论仅代表发言者个人的观点,与希赛网立场无关。请对您的言论负责,遵守中华人民共和国有关法律、法规。如果您的言论违反希赛网问答中心的规则,将会被删除。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&《.NET 3.5与VB 2008高级编程(第3版)》 - 清华大学出版社第五事业部
书名:《.NET 3.5与VB 2008高级编程(第3版)》
定价:¥139.00
版权信息和内容简介
作&nbsp&nbsp&nbsp&nbsp者:(美)Andrew&nbspTroelsen 著译&nbsp&nbsp&nbsp&nbsp者:姜玲玲&nbsp&nbsp唐明霞 译责任编辑:王&nbsp&nbsp军&nbsp&nbsp郑雪梅装帧设计:康&nbsp&nbsp博责任校对:胡雁翎责任印制:&nbsp出版发行:清华大学出版社&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp地&nbsp&nbsp&nbsp&nbsp址:北京清华大学学研大厦A座&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp.cn&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp
邮&nbsp&nbsp&nbsp&nbsp编:100084&nbsp&nbsp 社&nbsp&nbsp&nbsp&nbsp总&nbsp&nbsp&nbsp&nbsp机:010-&nbsp&nbsp&nbsp&nbsp邮&nbsp&nbsp&nbsp&nbsp购:010-&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp投稿与读者服务:010-,c-service@tup.&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp质&nbsp&nbsp量&nbsp&nbsp反&nbsp&nbsp馈:010-,zhiliang@tup.印&nbsp刷&nbsp者:&nbsp装&nbsp订&nbsp者:经&nbsp&nbsp&nbsp&nbsp销:全国新华书店开&nbsp&nbsp&nbsp&nbsp本:185×260&nbsp&nbsp&nbsp&nbsp印&nbsp&nbsp张:74&nbsp&nbsp&nbsp 字&nbsp&nbsp数:1990千字版&nbsp&nbsp&nbsp&nbsp次:2009年9月第1版&nbsp&nbsp&nbsp&nbsp
印&nbsp&nbsp&nbsp次:2009年9月第1次印刷印&nbsp&nbsp&nbsp&nbsp数:1~3000定&nbsp&nbsp&nbsp&nbsp价:139.00元内容简介&nbsp尊敬的读者:  本书的第1版出版于2001&nbsp年在乔治亚州亚特兰大市举办的Tech•Ed&nbsp会议之后不久。本书的最新版是以前版本的全新升级,它阐述了.NET&nbsp3.0&nbsp和.NET&nbsp3.5&nbsp中包含的所有新特性。  .NET&nbsp3.0&nbsp没有改变VB&nbsp的语法,它只是“增强版”,实际上提供了3种新的API:Windows&nbspPresentation&nbspFoundation(WPF)&nbsp、Windows&nbspCommunication&nbspFoundation(WCF)&nbsp和Windows&nbspWorkflow&nbspFoundation&nbsp(WF)&nbsp。本书还讨论了W’s&nbsp。  有别于.NET&nbsp3.0,.NET&nbsp3.5&nbsp提供了许多新的VB&nbsp语言特性和新的.NET&nbspA&nbspP&nbspI&nbsp。本书将使用与前面版本同样通俗易懂的方法,详细介绍所有这些新内容。本书将详细讨论语言级集成查询(Language&nbspIntegrated&nbspQuery,LINQ)&nbsp、VB&nbsp2008&nbsp语言变更(对象初始化语法、扩展方法、匿名类型等)以及Visual&nbspStudio&nbsp2008&nbsp的许多附加功能。  本书的任务就是为VB&nbsp2008&nbsp语言和面向对象编程技术以及.NET&nbsp平台的核心问题奠定坚实基础。掌握了本书的内容之后,您就可以自如地将这些知识应用于特定的编程任务,从而根据自己的想法探索.NET&nbsp世界。  祝您学习愉快!
.NET平台刚发布时(大约是2001年)在Visual Basic编程界引起了不小的轰动。一方面,很多顽固的VB6开发人员抗议VB6和Visual Basic .NET(VB.NET)之间的区别太大。这个群体中有人惊讶地发现,VB.NET实际上不是“VB7”(即与VB6具有相同的语法和编程结构,加上一些新的功能),其中有些东西已截然不同。
事情的真相是VB.NET与VB6的关系不大,最好将它看作BASIC家族的一门新语言。这一事实使有的人极度畏缩,以致于他们给VB.NET起了“VB.NOT”或“Visual Fred”等绰号来表达他们的不满。事实上,甚至有人开发了网站(http://vb.mvps.org/vfred/Trust.asp),专门写了请愿书,抨击Microsoft为了VB.NET这一新生事物而放弃VB6的决策。
VB.NET不仅引入了重大的语法变化,而且有些VB6风格的行为在.NET平台下完全不见踪影,因为它只会增加混乱。数据访问、表单开发和Web站点结构的核心.NET编程模型完全不同于它们基于COM的对应物。
随着时间的推移,.NET平台成为了主流的编程模型,即便是最顽固的VB6开发人员似乎也开始动摇了:VB6很快成为遗留编程工具。甚至Microsoft本身也明确地表示会随着时间的推移逐渐停止对VB6的支持。这也许是好事,它迫使我们改变。
在发布.NET 2.0时(大约是2005年),VB.NET被重命名为“Visual Basic 2005”。在发布.NET 3.5时,Microsoft的BASIC语言又被重新命名,这次称为“Visual Basic 2008”(是的,VB重命名游戏玩得疯了)。在本书中,当看到术语Visual Basic、VB或Visual Basic 2008时,要知道它们都是指.NET平台中的BASIC语言。当指的是以COM为中心的BASIC语言时,会使用术语Visual Basic 6.0或简称为VB6。
另一方面,很多VB6开发人员也为这众多的新语言功能所激动,而且开始虚心学习。这个群体的成员已准备好深入挖掘面向对象编程(OOP)、多线程应用程序开发以及从.NET基类库中发现的大量功能的细节。这些人很快意识到,在很多(如果不是大部分)情况下,现有VB6代码可以保留VB6代码,而新的开发可以用.NET平台和Visual Basic语言的最新迭代进行。
奇怪的是还有第三群人,随着Visual Basic .NET的发布而形成。因为VB.NET实际上是一门崭新的OOP语言,所以很多从来没有想过学习以BASIC为中心的语言的开发人员(通常是C++、Java和C#程序员)现在思想更为开放,开始探索全无分号和花括号的语言了。
无论如何,不管您认同哪一种群体,都欢迎您阅读本书。本书将采用的总体方法是将VB 2008作为BASIC家族中的一个独特成员来对待。在学习了开头几章后,就会介绍VB 2008的语法和语义。这里您将发现OOP的全面基础,包括了新VB 2008的所有语言功能(如对象初始化语法、匿名类型、扩展方法和 语言集成查询),并指导如何使用Visual Studio 2008集成开发环境。
另外,本书将深入讨论构建.NET应用程序时将用到的各个主要.NET代码库。还将提供.NET桌面编程的各个架构(Windows Forms和Windows Presentation Foundation)、ADO.NET的数据库编程、用ASP.NET进行的Web开发,以及其他关键.NET主题,如程序集配置、Windows Communication Foundation、Windows Workflow Foundation和文件IO操作。
我们是一个小组,您和我
技术作者为一个小组的成员(我应当知道―― 我是他们中的一员)编写了本书。您知道用任何平台构建软件解决方案都是极其详细的,而且非常具体地针对您的部门、公司、客户群等。也许您在电子发行行业工作,为州或本地政府开发系统,或者在NASA或军事分支机构工作。就我而言,我开发了孩子的教育软件、各种n层系统,以及医药和法律行业的大量项目。很可能您在您的就业地点写的几乎100%代码都和我在我的工作地点写的代码不同(除非我们以前碰巧一起工作过)。
因此,在本书中我有意识地选择避免创建与特定行业或编程vein紧密相关的示例代码。鉴于此,我选择用与行业无关的示例来解释VB 2008、OOP、CLR和.NET基类库。我不会给每个示例填充网格数据、计算薪金或诸如此类的事,相反,我会坚持采用我们都相关的主题:汽车(它有一些几何结构,还有一些与员工有关的事情)。所以我们采用这个示例。
我的任务是解释VB 2008编程语言和.NET平台的核心方面。为此目的,当本书结束时,我将尽一切努力来为您提供继续学习所需的工具和策略。
您的任务是接受这些信息并将它应用到您的特定编程任务上。我当然知道您的项目很可能不是有关汽车和昵称的,但通过这些示例可以运用所学的知识!请放心,一旦您理解了本书中提出的概念,就可以很好地构建映射到您自己独有的编程环境的.NET解决方案。
本书读者对象
本书假设您目前不具备以BASIC为中心的语言或Microsoft的.NET平台的经验(然而,如果已经有一些经验,当然更好)。本书假定您要么是一名专业软件工程师,要么是计算机科学系的学生。因此,本书可能不是特别适合对软件开发完全陌生的人,因为我们将探索很多低级/高级主题,而且不会花很多时间来将数据绑定到网格(至少在第22章之前不会),也不会介绍Visual Studio 2008菜单项的每个选项。
尽管本书将深入讨论一些高级主题,但这并不是说这里包括的材料就是不实用的!本书着重关注您作为一名精通的Visual Basic 2008开发人员必须理解的细节。由于部分信息可能比较有挑战性(例如,理解委托和lambda表达式的作用),因此本书是以友好而平易近人的语气编写的。
本书假定您是希望了解VB 2008内部工作的开发人员,因此不会通过简单地“拖放”来编写代码。尽管本书大部分是分析如何使用Visual Basic 2008来减少您必须手动创建的代码量,但本书通常只在您理解如何亲自编写代码后说明一下集成的向导的用法。这有助于您轻松地将集成了IDE的代码改为您喜欢的代码。
本书主要内容
本书从逻辑上划分成8个不同的部分,每个部分包括一些集中了特定技术集和/或特定任务的章节。为了帮助了解本书,下面将本书逐个部分和逐章地分解。
第I部分:Visual Basic 2008与.NET平台
第I部分的目的是使您适应.NET平台、.NET类型系统和构造.NET应用程序的过程中使用的各种开发工具的核心方面。在学习过程中,也会介绍VB 2008编程语言的一些基本细节。
第1章:.NET基本原理
第1章的作用是作为本书其余部分的基石。首先,将介绍传统Windows开发的世界,并揭示以前的开发方式的缺点。然而,本章的基本目标是使您熟知一些.NET构件块,如公共语言运行库(Common Language Runtime,CLR)、公共类型系统(Common Type System,CTS)和公共语言规范(Common Language Specification,CLS)以及基类库。此外,还会初步介绍一下VB 2008编程语言和.NET程序集格式,还将介绍.NET平台的平台无关特性以及公共语言基础结构(Common Language Infrastructure,CLI)。
第2章:构建Visual Basic 2008应用程序
本章的目标是介绍用各种工具和技术编译VB 2008源代码文件的过程。首先,将介绍如何使用命令行编译器(vbc.exe)和VB 2008响应文件。在本章其余部分,将介绍各种IDE,包括SharpDevelop、Visual Basic 2008 Express和Visual Studio 2008。另外,将提供一些开放源工具,它们是很多.NET开发人员的常备工具。
第II部分:核心VB编程结构
这一部分探索VB 2008编程语言的核心方面,如固有数据类型、决策和迭代结构、构造(和重载)方法,以及操作数组、字符串、枚举和模块。接下来,将深入介绍关于结构化异常处理的作用,以及CLR如何处理内存管理细节。
第3章:VB 2008编程结构(上)
本章首先介绍VB 2008模块类型的作用,以及可执行文件的入口点(Main()方法)的相关主题。本章还会介绍VB 2008的固有数据类型(以及它们的CTS等价物)、隐式和显式类型强制转换、迭代和决策结构,以及有效代码语句的结构。
第4章:VB 2008编程结构(下)
本章将完成基本编码结构的分析。本章的主要推动力在于用VB 2008的语法挖掘构建子例程和函数的细节。接着,将会介绍ByVal、ByRef和ParamArray关键字的作用,并理解方法重载的主题。本章还介绍了如何构建和操作数组、枚举和结构,以及潜伏在后台中的底层类(System.Array、System.Enum和System.ValueType)。
第5章:设计封装类类型
本章将深入挖掘第一个“OOP支柱”:封装服务。本章不仅会介绍基本类结构(构造函数、共享成员和属性语法),而且还会研究几个辅助类设计技术,如Partial关键字的作用和XML代码文档语法。
第6章:继承与多态
第6章的作用是分析VB 2008如何考虑OOP的其余“支柱”:继承和多态。这里您将了解如何用继承、虚拟方法、抽象方法(和类),以及各种类型强制转换操作构建相关类的家族。本章还会介绍.NET基类库中的终极基类System.Object的作用。
第7章:结构化异常处理
本章的重点是讨论如何用结构化异常处理来处理代码基中的运行时异常。本章不仅将介绍解决此类问题的VB 2008关键字(Try、Catch、Throw和Finally),而且会说明应用程序级和系统级的异常之间的区别。此外,本章将介绍Visual Studio 2008中的各种工具,利用这些工具可以调试逃出您的视线的异常。
第8章:对象生存期
本章介绍CLR如何使用.NET垃圾收集器管理内存。这里您将开始理解应用程序根、对象代和System.GC类型的作用。理解了这个基础后,本章其余部分将介绍构建“可诊断对象”的主题(通过IDisposable接口)以及如何与终结进程交互(通过System.Object.Finalize()方法)。
第III部分:高级VB编程结构
这一部分加深使用VB 2008时对OOP的理解。这里您将了解接口类型、委托和事件,以及几个高级主题(如运算符重载和泛型)的作用。另外,本部分深入挖掘了新的.NET 3.5语言特性的细节,包括初步介绍LINQ。
第9章:使用接口类型
本章的内容构建在对基于对象的开发的理解之上,包括了基于接口编程的主题。这里您将学到如何定义支持多重行为的类型、如何在运行时发现这些行为,以及如何从对象级别有选择地隐藏特定行为。为了显示接口类型的有用性,本章会介绍如何使用接口构建自定义事件体系结构。
第10章:集合、泛型和可为空值的数据类型
本章首先介绍System.Collections名称空间的集合类型,它自从发布以来就是.NET平台的一部分。然而,自从.NET 2.0发布以后,VB编程语言提供了对泛型的支持。正如您会看到的,泛型编程大大增强了应用程序性能和类型安全性。您不仅可以探索System.Collections.Generic名称空间中的各种泛型类型,而且还会了解到如何构建自己的泛型方法和类型(使用和不使用约束)。
第11章:委托、事件和Lambdas
第11章的作用是揭开委托类型的面纱。简单地说,.NET委托是一个指向应用程序中的其他方法的对象。使用这种模式,可以构建允许多个对象进行双向会话的系统。介绍了.NET委托的使用之后,将介绍VB 2008的Event、RaiseEvent、Handles和Custom关键字,它们被用来简化直接使用委托的编程操作。最后,将介绍lambda表达式和VB 2008的lambda运算符的作用。
第12章:运算符重载和自定义转换例程
本章通过引入一些高级编程技术来深入理解VB 2008编程语言。本章将包含值类型和引用类型的详细分析。接着,将学习如何重载运算符和创建自定义转换例程(隐式和显式)。本章最后对比了显式类型强制转换操作中CType()、DirectCast()和TryCast()的使用。
第13章:VB 2008特有的语言特性
发布.NET 3.5时,VB语言被增强为支持大量新的编程结构,其中很多被用来启用 LINQ API(从第14章开始分析)。本章将阐述局部变量的隐式类型、扩展方法、匿名类型和对象初始化语法的作用。
第14章:LINQ概述
本章首先介绍LINQ,它被认为是.NET 3.5的最有吸引力的方面。在本章您将发现,LINQ允许构建强类型的查询表达式,它可以被应用到一些LINQ目标来操作意义最广泛的“数据”一词。这里,您将了解LINQ to Objects,它允许向数据的容器应用LINQ表达式(数组、集合和自定义类型)。在后面的第24章分析如何向关系数据库(通过LINQ to ADO)应用LINQ表达式和XML文档(按LINQ to XML的方式)时,这些信息将很有用。
第IV部分:使用.NET程序集编程
第IV部分深入讨论.NET程序集格式的细节。这一部分不仅介绍如何部署和配置.NET代码库,而且将介绍.NET二进制映像的内部组成。本书的这一部分还解释了.NET属性的作用和多线程应用程序的结构以及使用互操作性的程序集访问遗留COM应用程序。
第15章:.NET程序集概述
从一个很高的水平来说,程序集是用来描述托管*.dll或*.exe文件的术语。然而,.NET程序集的真正意义远不止于此。本章将讨论单个文件和多文件程序集之间的区别,以及如何构建和部署各个实体。本章将说明私有和共享程序集可以使用基于XML的*.config文件和发布策略程序集配置。本章还将研究.NET Framework配置实用程序的作用。
第16章:类型反射、迟绑定和基于属性的编程
第16章继续分析了通过System.Reflection名称空间进行运行时类型检查的过程。使用这些类型,可以构建可以即时读取程序集的元数据的应用程序。本章将讨论如何动态地使用迟绑定激活和操作运行时类型。本章的最后一个主题探索了.NET属性的作用(标准和自定义)。为了说明各个主题的有用性,本章以可扩展的Windows Forms应用程序的构造结束。
第17章:进程、AppDomains和对象上下文
现在您已对程序集有了扎实的理解,本章开始深入挖掘加载的.NET可执行文件的成分。本章的目标是为了说明进程、应用程序域和上下文的边界之间的关系。这些主题为第18章的内容提供了适当的基础。第18章将介绍多线程应用程序的结构。
第18章:构建多线程应用程序
本章介绍了如何构建多线程应用程序,并说明了一些可用来编写线程安全代码的技术。为了理解委托对异步方法调用的固有支持,本章首先回顾了.NET委托类型。接下来将研究System.Threading名称空间中的类型。您会看到很多允许轻松地创建其他执行线程的类型(Thread、ThreadStart等)。最后介绍BackgroundWorker类型,它大大简化了从桌面用户界面中线程的创建。
第19章:.NET互操作性程序集
本部分的最后一章介绍了一个名为互操作性程序集的独特.NET程序集类型。这些二进制映像用来允许.NET应用程序使用经典COM类型。一旦深入了解了.NET应用程序如何使用COM服务器的细节,然后将学习相对的功能:使用.NET对象的COM应用程序。学完本章后,就会对互操作性层有了扎实的理解。
第V部分:.NET基类库
到本书的这个部分,您已经对VB 2008语言、.NET类型系统和程序集格式有了相当好的理解。本部分利用了您新得到的知识,探索了大量常用的基类库中发现的服务,包括文件IO和使用ADO.NET的数据库访问。本部分还包括使用Windows Communication Foundation(WCF)的分布式应用程序和使用Windows Workflow Foundation(WF)API的启用工作流的应用程序。
第20章:文件和目录操作
顾名思义,System.IO名称空间允许与机器的文件和目录结构交互。在本章的学习过程中,您将学会如何通过程序创建(和销毁)目录系统以及将数据移进及移出各种流(基于文件、基于字符串、基于内存等)。
第21章:对象串行化
本章介绍.NET平台的对象串行化服务。简言之,串行化允许将一个对象(或一组相关对象)的状态保留到流中以便以后使用。反串行化是将对象从流中取到内存中以便应用程序使用的过程。一旦了解了基础知识,然后将学习如何通过ISerializable接口和一些.NET属性定制串行化过程。
第22章:ADO.NET 第1部分:连接层
在这前两章以数据库为中心的章节中,将学习ADO.NET编程API。具体地说,本章将介绍.NET数据提供者的作用,以及如何使用ADO.NET的连接层与关系数据库通信,通过连接对象、命令对象、事务对象和数据读者对象来表示。此外,本章还将介绍自定义数据库以及本书其余部分将用到的数据访问库的创建方法。
第23章:ADO.NET 第2部分:断开连接层
本章继续通过分析ADO.NET的断开连接层来研究数据库操作。本章将讨论DataSet类型、数据适配器对象和Visual Studio 2008的大量工具的作用,这些工具大大简化了数据驱动应用程序的创建。接着将介绍如何将DataTable对象绑定到用户接口元素,如Windows Forms API的GridView类型。
第24章:使用LINQ API编程
第14章介绍了LINQ编程模型,特别是LINQ to Object。本章将通过分析如何向关系数据库、DataSet对象和XML文档应用LINQ查询来深入理解语言集成查询。接着将介绍数据上下文对象、sqlmetal.exe实用程序和Visual Studio 2008的各种LINQ特有的方面的作用。
第25章:Windows通信基础
.NET 3.0引入了一个崭新的API:WCF,它允许以一种对称的方式构建分布式应用程序,不管它们的底层管道技术是什么。本章将提供WCF服务、主机和客户端的构造。WCF服务极其灵活,其中客户端和主机可以利用基于XML的配置文件来声明性地指定地址、绑定和契约。
第26章: Windows工作流基础
除了WCF外,.NET 3.0还引入了另一个API:WF,它允许定义、执行和监控对复杂业务过程建模的工作流。本章将阐述Windows Workflow Foundation的整体作用,以及活动、工作流设计器、工作流运行时引擎的作用,而且还将介绍启用了工作流的代码库的创建。
第VI部分:使用Windows Forms创建桌面应用程序
本书的这一部分介绍如何使用Windows Forms API构建图形桌面应用程序。Windows Forms是原始桌面GUI架构,自从版本1.0以来,它就是.NET基类库的一部分。虽然.NET 3.0确实自带了一个新的GUI架构(Windows Presentation Foundation),但是Windows Forms仍然是.NET开发的关键部分,并且很可能是您为很多传统业务应用程序选择的UI工具箱。
第27章:Windows Forms
本章首先介绍System.Windows.Forms名称空间。在本章中,将学习构建支持菜单系统、工具栏和状态栏的传统GUI桌面应用程序的细节。本章还将介绍Visual Studio 2008的各种设计时的细节。
第28章:使用GDI+渲染图形数据
本章包括如何在Windows Forms环境中动态地渲染图形数据。除了讨论如何操作字体、颜色、几何图像和图像文件外,本章还介绍了点击测试和基于GUI的拖放技术。此外,本章还将介绍Windows Forms资源格式,它允许将图形图像文件、字符串数据和桌面应用程序的其他方面嵌套进可执行文件本身中。
第29章:使用Windows Forms控件编程
关于Windows Forms的最后一章将介绍.NET Framework 3.5自带的大量GUI窗口小部件。在本章中,不仅将学习如何使用各种各样的Windows Forms控件编程,而且也将学习对话框开发和Form继承。另外,本章还介绍了如何构建集成到IDE中的自定义Windows Forms控件。
第VII部分:使用WPF创建桌面应用程序
本书的这一部分集中介绍名为Windows Presentation Foundation(WPF)的全新桌面编程模型。WPF是“超动力的”UI工具箱,允许构建高交互性和富媒体的桌面应用程序。在本部分中将讨论WPF的作用、名为XAML的基于XML的语法,以及几个WPF功能,如动画、图形渲染和数据绑定。
第30章:WPF和XAML
.NET 3.0引入了一个全新的GUI工具箱,即WPF。本质上,WPF允许构建交互性极强的富媒体桌面应用程序(以及间接地构建Web应用程序)前台。与Windows Forms不同,这个超动力的UI架构将大量关键服务(2D和3D图形、动画、富文档等)集成到一个统一的对象模型中。本章将首先介绍WPF和Extendable Application Markup Language(XAML)。在本章中将学习如何使用XAML构建XAML-free的WPF程序,以及两者的结合。最后将构建一个自定义XAML查看器,它会在以WPF为中心的章节的其余部分使用。
第31章:使用WPF控件编程
在本章中,将介绍如何使用WPF控件内容模型,以及一些相关的以控件为中心的主题,如依赖性属性和例程事件。本章包括了使用大量WPF控件;而且,本章还将解释布局管理程序、控件命令行和WPF数据绑定模型的使用。
第32章:WPF二维图形渲染、资源和主题
本部分的最后一章将通过分析3个表面上相互独立的主题来介绍WPF。然而, WPF的图形渲染服务通常要求定义自定义资源。使用这些资源,可以生成自定义WPF动画,以及使用图形、资源和动画,还可以为WPF应用程序构建自定义主题。为了将所有这些主题结合到一起,本章最后说明了如何在运行时应用自定义图形主题。
第VIII部分:用ASP.NET构建Web应用程序
本书的最后一部分致力于用ASP.NET构造Web应用程序。ASP.NET被有意识地设计成通过在标准HTTP请求/响应上放置一个事件驱动的且面向对象的架构来为桌面用户界面创建建模。
第33章:构建ASP.NET Web页面
本章首先研究在使用ASP.NET的.NET平台下支持的Web技术。服务器端脚本代码现在用“真正的”面向对象语言(如VB 2008、C#等)替代了。本章将介绍关键ASP.NET主题,如使用(或不使用)code-behind文件、ASP.NET 3.5目录结构以及web.config文件的作用。
第34章:ASP.NET Web控件、主题和Master页面
本章将深入挖掘ASP.NET Web控件的详细信息。一旦理解了这些Web窗口小部件的基本功能,然后就会用各种各样的.NET 3.5功能(Master页面、*.sitemap文件、主题和皮肤)构建一个简单然而有说明性的Web站点。另外,本章将介绍有效性验证器控件和增强的数据绑定引擎的使用。
第35章:ASP.NET状态管理技术
本章将介绍在.NET下处理状态管理的各种方式,从而扩展对当前ASP.NET的理解。像经典ASP一样,ASP.NET允许轻松地创建cookies,以及应用程序级和会话级变量。一旦学习了使用ASP.NET处理状态的各种方式,然后就开始学习System.HttpApplication基类(潜伏在 Global.asax文件中)的作用。最后我们介绍ASP.NET配置文件管理API。
获取本章的源代码
本书包含的所有代码示例(散布在全书中的小块代码)都可以免费使用,并可以立即从Apress Web站点的Source Code区域下载。简单地导航到,选择Source Code/Download链接,并按照书名查找本书。一旦找到Pro VB 2008 and the .NET 3.5 Platform的页面,就可以下载一个自解压的*.zip文件。当解压缩内容时,将发现代码已经按照各章逻辑性划分了。此外,示例代码还可以从.cn/downpage下载。
注意,各章中像下面这样的“源代码”指示正在讨论的示例的线索,可以将它们加载到Visual Studio 2008中以便进一步分析和修改。
这是将您指向特定目录的源代码通知!
要做到这一点,简单地打开在正确的子目录中找到的*.sln文件。如果使用的不是Visual Studio 2008(参见第2章的其他IDE),可以将提供的源代码手动加载到所选择的开发工具中。
获取本书的更新
当您阅读本书时,可能发现一个偶然的图形化或代码错误(虽然笔者很希望没有)。 如果出现这种情况,笔者表示抱歉。作为一个人,尽管笔者尽了努力,但仍然可能存在一些小错误。如果有这种情况,可以从Apress Web站点中获得本书的勘误表(也位于本书的主页上),以及关于如何将您发现的任何错误通知笔者的信息。
如果您对关于本书的源代码有任何问题,需要弄明白给定的示例,或者只是希望提供您关于.NET的想法,请给作者发电子邮件(为了确保您的邮件不进入垃圾邮件文件夹,请在主题中包括“VB TE”字样):或wkservice@。
总之,感谢您购买本书(或者至少在书店浏览本书以决定是否购买)。希望您喜欢阅读本书,并充分利用您新学到的知识。
Visual Basic 2008
与.NET平台
.NET基本原理 3
历史状态 3
C/Win32 API程序员的生活 3
C++/MFC程序员的生活 4
Visual Basic 6.0程序员的生活 4
Java/J2EE程序员的生活 4
COM程序员的生活 5
Windows DNA程序员的生活 5
.NET解决方案 6
.NET平台的构件块
(CLR、CTS与CLS) 6
Visual Basic 2008的新内容 7
其他.NET支持语言 8
.NET程序集概览 10
单文件与多文件程序集 11
公共中间语言的作用 11
.NET类型元数据的作用 14
程序集清单的作用 15
公共类型系统 15
CTS类类型 16
CTS 接口类型 16
CTS结构类型 16
CTS枚举类型 17
CTS委托类型 17
CTS类型成员 17
固有CTS数据类型 18
公共语言规范 18
了解公共语言运行库 20
程序集/名称空间/类型
之间的区别 21
通过编程访问名称空间 24
引用外部程序集 25
使用ildasm.exe 25
查看CIL代码 26
查看类型元数据 26
查看程序集元数据
(也称为清单) 27
使用Lutz Roeder的reflector 27
部署.NET运行库 28
.NET的平台无关特性 29
构建Visual Basic 2008
应用程序 31
.NET Framework 3.5 SDK
VB 2008命令行编译器
(vbc.exe) 32
使用vbc.exe构建VB 2008
应用程序 32
使用vbc.exe引用外部程序集 34
使用vbc.exe编译多个源文件 35
使用vbc.exe引用多个外部
使用vbc.exe响应文件 36
使用SharpDevelop构建.NET
应用程序 38
使用Visual Basic 2008 Express
构建.NET应用程序 41
使用Visual Studio 2008构建
.NET应用程序 42
Visual Studio 2008的一些
特有功能 42
使用New Project对话框
选择.NET Framework的版本 43
使用Solution Explorer实用程序 43
Class View实用程序 45
Object Browser实用程序 45
Visual Studio 2008代码
片断技术 45
可视化类设计器 46
Object Test Bench 49
综合帮助系统 50
Visual Basic 6.0兼容性
程序集的作用 51
其他.NET开发工具的
部分目录 52
核心VB编程结构
VB 2008编程结构(上) 57
Module类型的作用 57
带多个模块的项目 58
模块是不能创建的 59
重命名初始模块 60
模块的成员 60
Main方法的作用 61
使用System.Environment
处理命令行参数 61
使用Main()处理命令行参数 62
Main()作为函数(而不是
作为子例程) 62
使用Visual Studio 2008指定
命令行参数 63
一个有趣的附加作用:
System.Environment类的一些
其他成员 63
System.Console类 64
使用Console类的基本
输入输出 65
格式化控制台输出 65
.NET字符串格式化标记 66
使用String.Format()格式化
系统数据类型与VB简洁
变量声明和初始化 68
数据类型的默认值 69
数据类型类层次结构 70
固有数据类型和New关键字 71
体验数值数据类型 71
System.Boolean的成员 72
System.Char的成员 72
分析字符串数据中的值 73
System.String类型 73
基本字符串操作 74
字符串连接(以及Newline常量) 74
字符串和相等 76
字符串是不能改变的 76
System.Text.StringBuilder类型 77
窄化(显式)或宽化(隐式)的
数据类型转换 78
Option Strict 80
显式转换函数 82
System.Convert的作用 83
构建Visual Basic 2008
代码语句 83
语句延续字符 83
在单行上定义多个语句 84
VB 2008流程控制语句结构 85
If/Then/Else语句 85
构建复杂条件表达式 86
Select/Case语句 87
VB 2008迭代结构 87
For/Next循环 88
For/Each循环 88
Do/While和Do/Until
循环结构 89
With结构 90
VB 2008编程结构(下) 91
定义子例程与函数 91
ByVal参数修饰符 92
ByRef参数修饰符 93
定义可选参数 94
使用ParamArrays 95
方法调用约定 96
包含静态局部变量的方法 97
成员重载 98
Overloads关键字 99
方法重载的细节 99
VB 2008中的数组操作 100
VB 2008数组初始化语法 101
定义Objects的数组 101
定义数组的下边界 102
Redim/Preserve语法 103
使用多维数组 104
System.Array类 105
VB 2008的枚举 106
控制枚举的底层存储 107
声明和使用枚举 107
System.Enum类型(以及解析关
键字命名冲突的一个教训) 108
动态地发现枚举的名/值对 110
VB 2008结构类型 111
设计封装类类型 114
VB 2008类类型简介 114
类构造函数 117
默认构造函数的作用 119
定义自定义构造函数 119
再次介绍默认构造函数 120
Me关键字的作用 121
使用Me链接构造函数调用 123
观察构造函数流程 125
Shared关键字 126
定义共享方法(和字段) 126
定义共享数据 128
定义共享构造函数 130
定义OOP的支柱 131
封装的作用 132
继承的作用 132
多态的作用 133
Visual Basic 2008访问修饰符 134
访问修饰符与嵌套类型 135
默认访问修饰符 135
访问修饰符与字段数据 136
第一个支柱:VB 2008的
封装服务 136
使用传统的取值和赋值封装 137
使用属性封装 138
属性的内部表示 140
控制属性可见性级别的
Get/Set语句 142
只读和只写属性 142
共享属性 142
常量数据 143
只读字段 145
局部类型定义 146
通过XML文档化VB 2008
源代码 147
使我们的概念形象化 151
继承与多态 152
继承的基本机制 152
Inherits关键字 153
关于多个基类 154
NotInheritable关键字 155
修订Visual Studio 2008类图 156
第二个支柱:继承的细节 157
使用MyBase控制基类的创建 159
Protected关键字 160
添加密封类 161
包容/委托模型的编程 162
第三个支柱:VB 2008的
多态支持 165
Overridable和Overrides
关键字 166
用Visual Studio 2008进行重写 167
NotOverridable关键字 168
抽象类和MustInherit关键字 169
用MustOverride构建一个
多态接口 170
成员屏蔽 173
基类/派生类的类型强制
转换规则 174
终极父类:System.Object 176
重写System.Object.ToString() 179
重写System.Object.Equals() 179
System.Object.GetHashCode() 180
测试修改后的Person类 181
System.Object的共享成员 181
结构化异常处理 183
关于错误、bug和异常 183
.NET异常处理的作用 184
.NET异常处理的原子性 184
System.Exception基类 185
最简单的示例 186
抛出一个简单的异常 187
捕获异常 188
配置异常的状态 189
TargetSite属性 189
StackTrace属性 190
HelpLink属性 190
Data属性 191
系统级异常
(System.SystemException) 192
应用程序级异常
(System.ApplicationException) 193
构建自定义异常(I) 193
构建自定义异常(II) 195
构建自定义异常(III) 195
按Visual Studio方式构建
自定义异常 196
处理多个异常 196
广义Catch语句 198
重新抛出异常 199
内部异常 199
Finally块 200
谁在抛出什么 201
未处理异常的结果 202
使用Visual Studio 2008
调试未处理异常 202
融合VB6错误处理与
结构化异常处理 203
对象生存期 205
类、对象和引用 205
对象生存期基础 206
CIL的New关键字 207
将对象引用设置成Nothing 208
应用程序根的作用 209
对象代 210
System.GC类型 210
构建可终结对象 213
重写System.Object.Finalize() 214
详细介绍终结过程 215
构建可诊断对象 216
构建可终结和可诊断类型 218
高级VB编程结构
使用接口类型 223
接口类型 223
定义自定义接口 225
实现接口 226
更新Hexagon类 227
支持多个接口的类型 228
与支持接口的类型进行交互 229
使用CType()获取接口引用 230
使用TypeOf/Is获取接口引用 230
作为成员参数的接口 231
作为返回值的接口 233
接口类型的数组 234
使用Implements关键字解决
名称冲突问题 234
通过Implements关键字定义
通用实现方式 236
使用Implements关键字对对象
级别隐藏接口方法 237
设计接口层次结构 238
构建可枚举的类型
(IEnumerable和IEnumerator) 239
构建可以克隆的对象
(ICloneable) 241
一个更精细的克隆示例 243
构建可比较的对象
(IComparable) 246
指定多种排序次序(IComparer) 248
自定义属性与自定义排序类型 249
使用接口作为回调机制 250
集合、泛型和可为空值的
数据类型 254
System.Collections的
非泛型类型 254
System.Collections命名
空间的接口 255
IDictionaryEnumerator
的作用 256
IList的作用 256
System.Collections的类类型 257
System.Collections.Specialized
名称空间 260
包装与解除包装操作 261
部分包装和解除包装实例 262
解除自定义值类型的包装 263
包装和解除包装操作的问题 264
类型安全性和强类型的集合 264
System.Collections.Generic
名称空间 269
可为空值的数据类型和
System.Nullable(Of T)
泛型类型 272
使用可为空值的类型 273
Visual Basic 2008可为
空值的运算符(?) 274
创建泛型方法 275
创建泛型结构(或类) 277
创建自定义泛型集合 279
自定义泛型集合类的用处 280
约束类型参数 282
缺少运算符约束 283
创建泛型接口 284
创建泛型委托 285
委托、事件和Lambdas 288
了解.NET委托类型 288
在VB 2008中定义
委托类型 289
研究自动生成的类类型 290
System.MulticastDelegate和
System.Delegate基类 291
可能最简单的委托示例 292
使用委托更新Car类型 294
激活多播 297
从委托的调用列表中
删除目标 298
了解(和使用)事件 299
使用RaiseEvent关键字
激活事件 299
事件的本质 300
使用WithEvents和Handles
关联引入的事件 301
使用Handles关键字多播 302
为多个事件定义单个
处理程序 302
使用AddHandler/RemoveHandler
动态关联引入的事件 303
定义“规规矩矩的”事件 304
定义强类型事件 306
定制事件注册过程 307
定义自定义事件 307
使用自定义委托来
自定义事件 309
Visual Basic Lambda表达式 310
分解Lambda表达式 312
使用多个参数的Lambda
表达式 313
使用自定义方法赋值
Lambda参数 314
使用Zero参数的
Lambda表达式 315
运算符重载和自定义
转换程序 316
运算符重载 316
运算符重载的情况 317
重载二元运算符 319
重载相等运算符 320
重载比较运算符 320
关于运算符重载的最后思考 321
值类型和引用类型的
详细情况 322
值类型、引用类型
和赋值运算符 323
包含引用类型的值类型 325
按值传递引用类型 326
按引用传递引用类型 327
值和引用类型:最后的细节 328
回顾:数值转换 329
回顾:相关类类型之间
的转换 329
创建自定义转换程序 330
定义隐式转换程序 332
VB DirectCast关键字 334
VB 2008特有的语言特性 337
了解隐式数据类型化 337
迭代结构中的隐式类型化 339
隐式类型数据是强类型数据 340
禁用Option Infer 340
后期绑定与隐式类型化 341
隐式类型变量的限制 343
隐式类型局部变量的有用性 343
了解扩展方法 344
定义扩展方法 344
重载扩展方法 345
在实例级别上调用扩展方法 346
调用定义模块上的扩展方法 346
扩展方法的作用域 347
导入定义扩展方法的类型 348
使用Visual Studio 2008
标识扩展方法 349
构建和使用扩展库 349
通过扩展方法扩展接口类型 350
对象初始化器语法 351
使用初始化语法调用
自定义构造函数 353
初始化包含的类型 354
匿名类型 355
匿名类型的内部表示 356
ToString()和GetHashCode()
的实现方式 357
匿名类型相等性的语义 357
包含匿名类型的匿名类型 359
LINQ概述 360
了解LINQ的作用 360
LINQ表达式是强类型
且可扩展 361
核心LINQ程序集 361
LINQ查询表达式概述 362
LINQ和隐式类型局部变量 364
LINQ和扩展方法 365
延期执行的作用 365
立即执行的作用 366
LINQ和泛型集合 367
LINQ和非泛型集合 368
LINQ查询运算符的
内部表示 370
使用查询运算符构建查询
表达式(重访) 371
使用Enumerable类型和
Lambda构建查询表达式 371
使用Enumerable类型和原始
委托构建查询表达式 372
VB LINQ查询运算符 373
使用Enumerable计数 374
构建新的测试项目 374
LINQ查询:本身是孤岛吗 379
使用.NET程序集编程
.NET程序集概述 385
.NET程序集的作用 385
程序集提示代码重用 385
程序集建立类型边界 386
程序集是可版本化单元 386
程序集是自描述对象 386
程序集是可配置对象 386
了解.NET程序集的格式 387
Win32文件头 387
CLR文件头 387
CIL代码、类型元数据
和程序集清单 388
可选的程序集资源 389
单文件和多文件的程序集 389
构造自定义的.NET
名称空间 390
观察根名称空间 391
定义根名称空间以外的
名称空间 392
导入自定义的名称空间 393
使用Imports关键字构建
类型别名 393
构建和使用单文件程序集 395
类型元数据 399
构建VB 2008客户端
应用程序 400
构建C#客户端应用程序 401
使用跨语言继承 402
构建和使用多文件程序集 403
ufo.netmodule文件 404
airvehicles.dll文件 404
使用多文件程序集 405
私有程序集 406
私有程序集的身份 406
探查过程 406
配置私有程序集 407
配置文件和
Visual Studio
.NET Framework配置
实用程序 409
共享程序集 411
使用sn.exe强命名
CarLibrary.dll 413
使用Visual Studio 2008
分配强名 414
在GAC中安装/删除
共享程序集 414
使用共享程序集 415
配置共享程序集 416
冻结当前的共享程序集 417
构建共享程序集版本2.0.0.0 417
动态重定向到共享程序集
的特定版本 418
回顾.NET Framework
配置实用程序 419
发布者策略程序集 420
System.Configuration
名称空间 423
类型反射、后期绑定
和基于属性的编程 425
类型元数据的必要性 425
查看EngineState枚举的
(部分)元数据 426
查看Car类型的(部分)
元数据 426
TypeRef 427
归档定义的程序集 428
归档引用的程序集 428
归档字符串文字 428
System.Type类 430
使用System.Object.GetType()
获得类型引用 430
使用System.Type.GetType()
获得类型引用 431
使用GetType()
获得类型引用 431
构建自定义的元数据
查看程序 432
方法的反射 432
字段和属性的反射 432
已实现接口的反射 433
显示各种零碎的内容 433
实现Main()方法 433
方法参数和返回值的反射 434
动态加载程序集 435
共享程序集的反射 437
后期绑定 439
使用System.Activator类
执行后期绑定 439
调用无参数的方法 440
调用带有参数的方法 440
属性编程 441
属性使用程序 441
在VB 2008中应用预先定义
的属性 442
指定属性的构造函数参数 443
实际应用的
VB 2008属性简写符号 444
构建自定义的属性 445
应用自定义属性 445
限制属性使用 446
程序集级(和模块级)的属性 447
使用早期绑定反射属性 448
使用后期绑定反射属性 449
综合介绍反射、后期绑定
和自定义属性 450
构建可扩展的应用程序 451
构建Common
SnappableTypes.dll 451
构建VB 2008管理单元 452
构建C#管理单元 453
构建可扩展的Windows
Forms应用程序 453
进程、AppDomain和
对象上下文 456
回顾传统的Win32进程 456
线程概览 457
在.NET平台下与进程交互 458
列举运行的进程 459
研究特定的进程 460
研究进程的线程集 460
研究进程的模块集 462
以编程方式启动和停止进程 462
.NET应用程序域 463
列举进程的AppDomain 464
以编程方式创建新的
AppDomain 465
以编程方式卸载AppDomain 467
对象上下文边界 468
上下文敏捷和上下文
绑定类型 468
定义上下文绑定对象 469
检查对象的上下文 469
总结进程、应用程序域和
上下文 471
构建多线程应用程序 472
进程/应用程序域/上下文
/线程之间的关系 472
简要回顾.NET委托 474
委托的异步特性 476
BeginInvoke() 和
EndInvoke()方法 476
System.IAsyncResult接口 476
异步调用方法 477
同步调用线程 477
AsyncCallback委托的作用 479
AsyncResult类的作用 480
传递和接收自定义的
状态数据 480
System.Threading名称空间 481
System.Threading.Thread类 482
获得当前线程的统计 483
Name属性 483
Priority属性 484
以编程方式创建辅助线程 484
使用ThreadStart委托 485
创建线程:速记符号 486
使用ParameterizedThreadStart
前台线程和后台线程 488
并发性问题 489
使用SyncLock关键字同步 491
使用System.Threading.Monitor
类型同步化 492
使用System.Threading.
Interlocked类型同步 493
属性同步 494
使用TimerCallback编程 495
CLR线程池 496
BackgroundWorker组件
的作用 497
使用BackgroundWorker
使用BackgroundWorker
类型处理数据 499
.NET互操作性程序集 501
.NET互操作性的作用域 501
.NET到COM互操作性的
简单示例 502
.NET互操作程序集 504
运行库可调用封装程序 506
RCW:将COM类型转换
为.NET类型 507
RCW:管理COM类
(coclass)的引用计数 507
RCW:隐藏低级的
COM接口 508
COM IDL的作用 508
观察为VB COM服务器
生成的IDL 510
IDL属性 510
IDL库语句 511
[default]接口的作用 511
IDispatch的作用 511
IDL形参属性 512
使用类型库构建互操作
程序集 512
后期绑定CoCalc COM类 513
构建更有趣的VB6 COM
服务器 514
支持额外的COM接口 515
提供内部对象 516
互操作程序集 517
构建VB 2008客户端
应用程序 518
与CoCar类型交互 518
截获COM事件 520
COM到.NET互操作性 521
CCW的作用 522
.NET类接口的作用 522
构建.NET类型 523
使用Visual Studio 2008
插入COM类 524
定义强名 526
生成类型库并注册
.NET类型 526
导出的类型信息 527
构建VB6测试客户端 528
.NET基类库
文件和目录操作 531
System.IO名称空间 531
Directory(Info)和
File(Info)类型 532
使用DirectoryInfo类型 533
使用DirectoryInfo类型
列举文件 534
使用DirectoryInfo类型
创建子目录 535
使用Directory类型 536
使用DriveInfo类类型 537
使用FileInfo类 537
FileInfo.Create()方法 538
FileInfo.Open()方法 539
FileInfo.OpenRead()和
FileInfo.OpenWrite()方法 540
FileInfo.OpenText()方法 540
FileInfo.CreateText()和
FileInfo.AppendText()方法 541
使用File类型 541
抽象的Stream类 543
使用StreamWriter和
StreamReader 545
写入文本文件 546
从文本文件读取 546
直接创建Stream
Writer/StreamReader对象 547
使用StringWriter和
StringReader 548
使用BinaryWriter和
BinaryReader 549
以编程方式“监视”文件 551
执行异步文件I/O 552
对象串行化 555
了解对象串行化 555
配置用于串行化的对象 557
选择串行化格式器 558
IFormatter和
IRemotingFormatting接口 559
格式器之间的类型精确度 560
使用BinaryFormatter串行化
使用SoapFormatter
串行化对象 562
使用XmlSerializer
串行化对象 563
持久保存对象集合 565
自定义串行化过程 567
深入研究对象串行化 567
使用ISerializable自定义
串行化 568
使用属性自定义串行化 570
ADO.NET第1部分:
连接层 573
ADO.NET的高级定义 573
ADO.NET数据提供者 574
Microsoft提供的ADO.NET
数据提供者 576
获得第三方的ADO.NET
数据提供者 577
额外的ADO.NET名称空间 577
System.Data名称空间的类型 578
IDbConnection接口的作用 579
IDbTransaction接口的作用 579
IDbCommand接口的作用 579
IDbDataParameter和
IDataParameter接口的作用 580
IDbDataAdapter和
IDataAdapter接口的作用 580
IDataReader和IDataRecord
接口的作用 581
使用接口抽象化数据提供者 582
创建AutoLot数据库 585
创建Inventory表 585
创建GetPetName()存储过程 586
创建Customers和Orders表 587
可视化创建表关系 587
ADO.NET数据提供者
工厂模型 588
已注册的数据提供者工厂 589
完整的数据提供者工厂
模型示例 590
ADO.NET的连接层 593
使用连接对象 594
使用ConnectionStringBuilder
使用命令对象 597
使用数据读取器 598
构建可重用的数据访问库 600
添加连接逻辑 601
添加插入逻辑 602
添加删除逻辑 602
添加更新逻辑 603
添加选择逻辑 603
使用参数化的命令对象 603
使用DbCommand执行
存储过程 605
创建基于控制台UI的前端 607
实现Main()方法 607
实现ShowInstructions()
和ClearConsole()方法 609
实现ListInventory()方法 609
实现DeleteCar()方法 610
实现InsertNewCar()方法 610
实现UpdateCarPetName()
调用存储过程 611
使用SqlCommand执行异步
数据访问 611
数据库事务 613
ADO.NET事务对象的
关键成员 614
向InventoryDAL
添加事务方法 614
测试数据库事务 616
ADO.NET第2部分:
断开连接层 618
ADO.NET的断开连接层 618
DataSet的作用 619
DataSet的关键属性 619
DataSet的关键方法 620
构建DataSet 620
使用DataColumn 621
构建DataColumn 622
启用自动递增字段 622
向DataTable添加
DataColumn 623
使用DataRow 623
RowState属性 625
DataRowVersion属性 626
使用DataTable 627
在DataSet中插入
DataTable 627
使用DataTableReader
对象处理DataTable数据 628
将DataTable/DataSet对象
串行化为XML 629
以二进制格式串行化
DataTable/DataSet对象 630
将DataTable对象绑定到用户
通过泛型List(Of T)
填充DataTable 632
以编程方式删除行 634
基于筛选标准选择行 635
更新行 637
使用DataView类型 638
最后的UI增强:呈现行号 639
使用数据适配器填充
DataSet/DataTable对象 640
简单的数据适配器示例 640
将数据库名映射为友好名称 641
重新访问AutoLotDAL.dll 642
定义初始的类类型 642
使用SqlCommandBuilder
配置数据适配器 643
实现GetAllInventory() 644
实现UpdateInventory() 644
构建Windows Forms前端 644
定位多表的DataSet对象 646
准备数据适配器 646
构建表关系 648
更新数据库表 648
在相关表之间定位 648
Visual Studio 2008的数据
访问工具 651
可视化设计DataGridView 651
app.config文件和
Settings.Settings文件 653
研究生成的DataSet 654
研究生成的DataTable
和DataRow 656
研究生成的数据适配器 656
在代码中使用生成的类型 657
从UI层分离自动生成
的代码 659
使用LINQ API编程 662
LINQ to ADO.NET的作用 662
使用LINQ to DataSet编程 663
DataSet扩展的作用 664
获得LINQ兼容的DataTable 664
EnumerableRowCollection的
隐式接口 666
DataRowExtensions.Field
(Of T)()扩展方法的作用 666
通过LINQ查询填充新
的DataTable 667
使用LINQ to SQL编程 668
实体类的作用 668
DataContext类型的作用 668
简单的LINQ to SQL示例 669
构建强类型的DataContext 670
详细介绍和
使用sqlmetal.exe生成
实体类 672
研究生成的实体类 673
使用实体类定义关系 674
强类型的DataContext 675
针对生成的类型编程 676
使用Visual Studio 2008构建
实体类 677
插入新项 678
更新已有的项 679
删除已有的项 679
使用LINQ to XML编程 680
作为更好的DOM的
LINQ to XML 680
System.Xml.XLinq名称空间 680
Visual Basic 2008的集成
XML支持 681
在String数据类型
中存储XML字面值 682
在XML字面值中混合
编程构造 682
以编程方式创建XML元素 683
以编程方式创建XML文档 684
通过LINQ查询生成文档 686
加载和解析XML内容 687
定位内存中的XML文档 688
修改XML文档中的数据 689
XML轴属性的作用 690
Windows通信基础 693
综合介绍分布式计算API 693
DCOM的作用 694
COM+/Enterprise Service
的作用 694
MSMQ的作用 695
.NET Remoting的作用 695
XML Web服务的作用 696
命名管道、套接字和P2P 698
WCF的作用 699
WCF特性概述 699
面向服务体系结构概述 700
WCF概要 700
研究核心WCF程序集 701
Visual Studio WCF项目模板 702
WCF应用程序的基本
组成部分 703
WCF的ABC 704
理解WCF契约 705
理解WCF绑定 705
理解WCF地址 708
构建WCF服务 709
作为可操作契约的服务类型 711
驻留WCF服务 712
在App.config文件中
建立ABC 712
针对ServiceHost类型编码 713
主机编码选项 714
ServiceHost类型的细节 715
元素的细节 716
启用元数据交换 717
构建WCF客户应用程序 719
使用svcutil.exe生成
代理代码 719
使用Visual Studio 2008
生成代理代码 720
使用WCF Service Library
项目模板 721
构建简单的数学服务 721
使用WcfTestClient.exe
测试WCF服务 722
使用SvcConfigEditor.exe
修改配置文件 722
作为Windows服务驻留
WCF服务 723
在代码中指定ABC 724
启用MEX 725
创建Windows服务
安装程序 726
安装Windows服务 726
异步调用服务 727
设计WCF数据契约 729
使用以Web为中心的
WCF Service项目模板 729
实现服务契约 731
*.svc文件的作用 732
更新web.config文件 732
测试服务 733
Windows工作流基础 735
定义业务过程 735
WF的构件 736
WF运行时引擎 737
WF的核心服务 737
WF活动简介 738
顺序和状态机工作流 739
WF的程序集、
名称空间和项目 741
.NET 3.5 WF支持 741
Visual Studio工作流
项目模板 741
深入了解工作流的流程 742
构建允许工作流的简单
应用程序 742
研究初始的工作流代码 743
添加Code活动 743
添加While活动 744
研究WF引擎宿主代码 746
在工作流中调用Web服务 749
创建MathWebService 750
构建WF Web服务使用者 751
配置IfElse活动 753
配置InvokeWebService活动 755
与WCF服务通信 757
构建可重用的WF代码库 760
执行信用检查 761
创建Windows Forms
客户应用程序 763
自定义活动概述 765
使用Windows Forms
创建桌面应用程序
Windows Forms 769
System.Windows.Forms
名称空间概述 769
使用Windows Forms类型 771
手动创建主窗口 771
遵守关注点分离 772
Application类的功能 773
使用Application类 773
System.EventHandler委托 774
窗体分析 775
Control类的功能 776
使用Control类 778
响应MouseMove事件 779
确定单击的鼠标键 780
响应键盘事件 780
Form类的功能 781
用Visual Studio 2008
构建Windows应用程序 784
剖析Visual Studio 2008
的Windows Forms项目 785
在设计时实现事件 787
StartUp Object/Main() Sub
使用MenuStrip和
ContextMenuStrip 789
给MenuStrip添加文本框 790
创建上下文菜单 791
选中菜单项 793
使用StatusStrip 795
设计菜单系统 796
设计StatusStrip 797
使用Timer类型 798
触发显示 799
显示菜单选择提示 800
构建“就绪”状态 800
使用ToolStrip 801
构建MDI应用程序 804
构建父窗体 805
构建子窗体 806
产生子窗口 806
使用GDI+呈现图形数据 808
GDI+名称空间概述 808
System.Drawing名称
空间概述 809
System.Drawing的
实用程序类型 810
Point和PointF类型 810
Rectangle和RectangleF类型 811
Region、Size和SizeF类 811
理解Graphics类 812
理解Paint会话 813
使窗体的客户区失效 814
在Paint事件处理程序
之外获取Graphics对象 815
关于Graphics对象的处理 816
GDI+坐标系统 817
默认的量度单位 818
指定替代的量度单位 818
指定替代的圆点 819
定义颜色值 821
操作字体 822
使用字体家族 823
使用字体和字体大小 824
列举安装的字体 826
FontDialog类 828
System.Drawing.Drawing2D
名称空间概述 829
使用 Pen 829
使用Brush 833
使用HatchBrush 834
使用TextureBrush 835
使用LinearGradientBrush 836
呈现图像 837
PictureBox控件的拖动
和命中测试 839
呈现图像的命中测试 841
非矩形图像的命中测试 843
理解Windows Forms
资源格式 845
System.Resources
名称空间 846
以编程的方式创建
*.resx文件 846
构建*.resources文件 847
将*.resources文件绑定
到.NET程序集中 848
使用ResourceWriters 848
使用Visual Studio 2008
生成资源 849
以编程的方式读取资源 850
使用Windows Forms
控件编程 852
Windows Forms控件概述 852
手动给窗体添加控件 852
使用Visual Studio 2008
添加控件到窗体 855
使用基础控件 856
使用Label 856
使用TextBox 857
使用MaskedTextBox 859
使用Button 860
使用CheckBox、RadioButton
和GroupBox 862
使用CheckedListBox 865
使用ListBox 866
使用ComboBox 867
配置制表符顺序 868
设置窗体的默认输入按钮 869
使用较为特殊的控件 869
使用MonthCalendar 869
使用ToolTip 871
使用TabControl 872
使用TrackBar 873
使用Panel 875
使用UpDown控件 876
使用ErrorProvider 878
使用TreeView 880
使用WebBrowser 884
构建自定义Windows Forms
创建图像 886
构建设计时GUI 886
实现核心CarControl 886
定义自定义事件 888
定义自定义特性 888
控制动画 889
呈现昵称 889
测试CarControl类型 890
构建自定义CarControl
主窗体 890
ponentModel
名称空间的功能 892
增强CarControl的
设计时显示 892
定义默认特性和默认事件 893
指定自定义工具箱位图 894
构建自定义对话框 895
DialogResult特性 896
理解窗体继承 897
动态定位Windows
Forms控件 899
Anchor特性 899
Dock特性 900
表和流程布局 901
使用WPF创建桌面应用程序
WPF和XAML 905
WPF的动机 905
统一不同的API 906
通过XAML提供
关注点分离 906
提供最佳渲染模型 907
其他以WPF为中心的
特殊性能 907
各种类型的WPF应用程序 908
传统桌面应用程序 908
基于导航的WPF应用程序 908
XBAP应用程序 909
Silverlight应用程序 910
研究WPF程序集 910
Application类的功能 911
Window类的功能 912
构建(XAML-Free)WPF
应用程序 916
扩展Window类的类型 918
创建一个简单的用户界面 919
Application类型的其他细节 920
应用程序范围数据和处理
命令行实参 920
Application的Windows
集合的迭代 921
Application类型的其他事件 921
Window类型的其他细节 922
Window对象的生存期 922
处理Window对象的关闭 923
处理窗口级的鼠标事件 924
处理窗口级的键盘事件 925
构建(以XAML为中心)
WPF应用程序 925
在XAML中定义
MainWindow 926
在XAML中定义
Application对象 927
通过msbuild.exe
处理XAML文件 928
将标记转换成.NET程序集 930
映射XAML到VB代码 930
BAML的功能 931
针对程序集的XAML
处理小结 932
使用代码分离文件的
关注点分离 933
XAML的语法 935
XAML名称空间和
XAML关键字 935
XAML元素和XAML属性 937
理解XAML属性元素语法 938
理解XAML附加特性 940
理解XAML类型转换器 941
理解XAML标记扩展 941
资源和数据绑定预览 943
使用Visual Studio 2008
构建WPF应用程序 945
WPF项目模板 945
改变初始窗口的名称 945
WPF设计器 946
在运行库中处理XAML:
SimpleXamlPad.exe 948
实现Loaded事件 949
实现Button的Click事件 950
实现Closed事件 951
测试应用程序 951
Microsoft Expression Blend
的功能 952
使用WPF控件编程 954
WPF控件库概述 954
Visual Studio
文档中的细节 955
在XAML中声明控件 956
理解依赖属性的功能 958
研究现有的依赖属性 959
注册依赖属性 960
为DependencyProperty
字段定义封装器特性 961
理解路由事件 962
路由冒泡事件的功能 963
继续或者停止冒泡 964
路由隧道事件的功能 964
使用Button类型 966
ButtonBase类型 966
Button类型 967
ToggleButton类型 967
RepeatButton类型 968
使用CheckBoxes和
RadioButtons 969
建立逻辑群 970
构架GroupBox中的
相关元素 971
构架Expander中的
相关元素 971
使用ListBox和
ComboBox类型 972
以编程的方式填充List控件 973
添加专用内容 974
确定当前选择 975
确定内嵌内容的当前选择 976
使用文本区域 977
使用TextBox类型 977
使用PasswordBox类型 978
使用窗格控制内容布局 979
WPF的核心窗格类型 980
在Canvas窗格内定位内容 981
在WrapPanel窗格内
定位内容 983
在StackPanel窗格内
定位内容 984
在Grid窗格内定位内容 985
在DockPanel窗格内
定位内容 987
启用Panel类型的滚动行为 987
使用内嵌窗格构建
窗口的构架 988
构建菜单系统 989
构建工具栏 990
构建状态条 991
结束UI设计 991
结束实现 992
理解WPF控件命令 993
内部控件命令对象 993
连接命令到命令特性 994
连接命令到专用UI元素 995
理解WPF数据绑定模型 996
初观数据绑定 997
DataContext特性 998
Mode特性 998
使用IValueConverter的
数据转换 999
绑定自定义对象 1001
使用Observable
Collection(Of T)类型 1003
创建自定义数据模板 1004
绑定UI元素到XML文档 1005
构建自定义对话框 1006
分配DialogResult值 1007
获得当前选择 1008
显示自定义对话框 1008
WPF二维图形渲染、资源
和主题 1010
WPF图形渲染服务哲学 1010
WPF图形渲染选项 1011
选择合适的方法 1016
探索Shape派生类型 1016
使用WPF画笔 1019
用单色构建画笔 1019
使用渐变画笔 1020
ImageBrush类型 1021
使用WPF笔 1021
探索Drawing派生类型 1022
几何类型的功能 1022
剖析简单的绘制几何 1023
DrawingImage包含的
Drawing类型 1024
DrawingBrush中包含的
Drawing类型 1024
更加复杂的Drawing几何 1025
UI转换的功能 1026
Transform派生类型 1026
应用转换 1027
理解WPF的动画服务 1028
Animation后缀类型的功能 1028
Timeline基类的功能 1029
在VB代码中编写动画 1029
控制动画的调步 1031
反向和循环动画 1031
在XAML中编写动画 1032
Animation关键帧的功能 1033
理解WPF资源系统 1036
使用二进制资源 1036
对象(又称为逻辑)资源
的功能 1037
为WPF控件定义并
应用样式 1037
使用内联样式 1038
使用命名样式 1039
重写样式设置 1040
使现有样式成为子类 1040
扩展样式 1041
收缩样式 1042
隐式地分配样式 1042
用触发器定义样式 1042
以编程的方式分配样式 1044
使用模板更改控件的UI 1045
构建自定义模板 1046
添加触发器到模板 1047
合并模板到样式中 1048
第VIII部分
用ASP.NET构建
Web应用程序
构建ASP.NET Web页面 1053
HTTP的功能 1053
HTTP请求/响应循环 1053
HTTP是一种无状态协议 1054
理解Web应用程序和
Web服务器 1054
IIS虚拟目录的功能 1055
ASP.NET开发服务器 1056
HTTP的功能 1057
HTML文档结构 1057
HTML窗体开发 1058
构建基于HTML的
用户界面 1059
客户端脚本的功能 1061
客户端脚本示例 1062
验证default.htm窗体数据 1062
提交窗体数据(获取和提交) 1063
构建传统ASP页面 1063
传统ASP的问题 1065
ASP.NET 1.x的主要优点 1065
ASP.NET 2.0的主要改进 1066
主要的ASP.NET 3.5 Web
的改进 1066
ASP.NET名称空间 1066
ASP.NET Web页面
代码模型 1067
构建以数据为中心的
单文件测试页面 1068
使用代码分离页面模型 1073
ASP.NET网站目录
结构细节 1076
引用程序集 1076
App_Code文件夹
的功能 1077
ASP.NET页面编译周期 1077
单文件页面的编译周期 1078
多文件页面的编译周期 1078
页面类型的继承链 1080
与入站HTTP请求进行
互操作 1081
获得浏览器统计数据 1082
访问引入的窗体数据 1082
IsPostBack特性 1083
与出站HTTP响应进行
互操作 1084
发送HTML内容 1084
重定向用户 1085
ASP.NET Web页面的
生命周期 1085
AutoEventWireup
属性的功能 1087
Error事件 1088
web.config文件的功能 1089
ASP.NET Web控件、主题
和Master页面 1092
理解Web控件的实质 1092
限定服务器端的事件处理 1093
AutoPostBack特性 1093
System.Web.UI.Control
枚举已包含的控件 1095
动态添加(或者移除)控件 1096
System.Web.UI.WebControls
.WebControl类型的关键成员 1097
ASP.NET Web控件的类别 1098
构建ASP.NET网站 1099
使用Master页面 1100
定义Default.aspx内容页面 1105
设计目录内容页面 1106
设计Build-a-Car内容页面 1110
验证控件的功能 1111
RequiredFieldValidator 1113
RegularExpressionValidator 1113
RangeValidator 1114
CompareValidator 1114
创建验证小结 1115
使用主题 1115
理解*.skin文件 1116
应用站点范围的主题 1117
在页面级应用主题 1118
SkinID特性 1118
以编程的方式分配主题 1119
ASP.NET状态管理技术 1122
发布状态 1122
ASP.NET状态管理技术 1124
理解ASP.NET查看状态
的功能 1124
示范查看状态 1125
添加自定义查看状态数据 1126
关于控件状态的简述 1127
Global.asax文件的功能 1127
全局最后机会异常事件
处理程序 1129
HttpApplication基类 1129
理解应用程序/会话的区别 1130
维护应用程序级状态数据 1130
修改应用程序数据 1133
处理Web应用程序的关闭 1133
使用应用程序缓存 1134
使用数据缓存 1134
修改*.aspx文件 1137
维护会话数据 1138
其他HttpSessionState成员 1140
理解Cookie 1141
创建Cookie 1142
读取引入的Cookie数据 1143
元素的功能 1144
在ASP.NET会话状态
服务器上存储会话数据 1144
在专用数据库中存储
会话数据 1145
理解ASP.NET配置文件
ASPNETDB数据库 1146
在web.config中定义
用户配置文件 1147
以编程的方式访问配置
文件数据 1148
分组配置文件数据并
保留自定义对象 1151
Copyrights(C) 2005 By 清华大学出版社第五事业部()&All
Rights Reserved
技术支持: 025- FAX: 025- E-Mail:
地址:清华大学南门内200米绿楼 电话:010- 邮编:100084

我要回帖

更多关于 怎么看导航仪系统版本 的文章

 

随机推荐