走进C#主要内容本章重点1.
1Microsoft.
NET概述1.
1.
1什么是.
NET2000年6月22日,不论对Microsoft还是对整个IT界都是值得纪念的一天.
这一天微软公司正式推出了其下一代计算计划Microsoft.
NET(以下简称.
NET),这项计划将使微软现有的软件在Web时代不仅适用于传统的PC,而且也能够满足目前呈强劲增长势头的新设备,诸如蜂窝电话以及个人数字助理(PersonalDigitalAssistant,简称PDA)等的需要.
微软还计划通过创建新的工具来吸引软件开发人员与合作伙伴对Microsoft.
NET的认同,并开发出其他基于Internet的服务.
读者是否想知道究竟什么是.
NET请听听微软官员的声音:"……因特网的革命……从微软的角度来讲,我们就是要建设一个平台来创建并且支持新一代的应用.
……我们必须有一套通用系统服务来支持这样的操作.
这种观点就说明我们还有下一个层次的发展,也就是说,因特网下一步的发展,它将使因特网的作用远远超越展现一个网站.
".
NET首先是一个开发平台.
它定义了一种公用语言子集(CommonLanguageSubset,简称CLS),这是一种为符合其规范的语言与类库之间提供无缝集成的混合语.
.
NET统一了编程类库,提供了对下一代网络通信标准——可扩展标记语言(ExtensibleMarkupLanguage,简称XML)的完全支持,使应用程序的开发变得更容易、更简单.
Microsoft.
NET计划还将实现人机交互方面的革命,微软将在其软件中添加手写和语音识别等功能,让人们能够与计算机进行更好的交流,并在此基础上继续扩展功能,增加对各种用户终端的支持能力.
最为重要的是.
NET将改变因特网的行为方式:软件将变成服务.
与Microsoft的其他产品一样,.
NET与Windows平台紧密集成,并且与其他微软产品相比,它更进一步,由于其运行库已经与操作系统融合在一起了,从广义上把它称为一个运行库也不为过.
简而言之,.
NET是一种面向网络、支持各种用户终端的开发平台环境.
微软的宏伟目标是让Microsoft.
NET彻底改变软件的开发方式、发行方式、使用方式等,并且不止是针对微软一家,而是面向所有开发商与运营商.
.
NET的核心内容之一就是要搭建第三代因特网平台,这个网络平台将解决网站之间的协同合作问题,从而最大限度地获取信息.
在.
NET平台上,不同网站之间通过相关的协定联系在一起,网站之间形成自动交流,协同工作,提供最全面的服务.
1.
1.
2人们为什么需要.
NET某一天,一个出差到外地的人在机场租借手机.
在向该终端插入他的IC卡后,他的地址簿和计划簿将被自动下载,随即它就变成了他个人专用的PDA.
这不是梦境,这是.
NET为人们描绘的一个未来生活的场景.
人们的需要总是无法满足,人们不断地问自己:"我们还应该有些什么"需求推动着技术的进步.
21世纪,Internet将成为商业活动的主要场所,B2B、B2C等电子商务的运作方式,一对一营销的经营概念将网络的服务功能提高到了前所未有的程度.
微软公司在此时提出.
NET有其深远的战略考虑:改革商务模型.
微软公司感觉到只靠销售软件包的商务模型没有什么前途,于是计划今后将中心转移到可以在网络上使用"服务"型商务.
这样的话,首要的问题就是解决网络上用来开发并执行"服务"的平台,这就是Microsoft.
NET.
提高软件开发生产效率,并且试图使应用软件的发布更为容易(再也不会因为DLL版本不同而烦恼,不用重新启动电脑就能够安装应用软件).
改进用户界面,并能支持多种用户终端.
用户界面改进的结果包括两方面的内容,一是完成传统的PC界面与基于XML的浏览器界面间的过渡;二是对自然语言和语音识别的支持,从而使用户与各种终端之间的沟通更加透明,真正达到网络互联的"3A":Anywhere,Anytime,Anydevice.
人们经常会问:"除了上网看新闻我们究竟还能干什么"这是因为今天的互联网与旧式的大型计算机的工作模式还有许多相似之处,信息被储存在中央服务器内,而用户的所有操作都要依靠它们.
让不同的网址之间相互传递有意义的信息,或者合作提供更广泛和更深层次的服务,还是一件十分困难的事.
现代人时常有一种困惑,感觉到生活在技术与机器架构的丛林中,人们在努力地去适应机器,适应技术,而不是机器和技术适应人类.
科技以人为本还只是一个美好的愿望.
这是因为我们还没有能力将控制信息的权利交给那些需要信息的人.
.
NET的出现,意味着人们可以利用一些简单的界面就可以编写、浏览、编辑和分享信息,而且还可以得到功能强大的信息管理工具.
由于使用的所有文件都以符合网络协议的格式存在,所以,所有的商业用户和个人用户都可以方便地查找和使用其中的信息,任何规模的公司都可以使用相同的工具与他们的供应商、商业伙伴和客户高效地沟通和分享信息,这就创造出了一种全新的协同工作模式.
总之,.
NET战略是一场软件革命:.
NET对最终用户来说非常重要,因为计算机的功能将得到大幅度提升,同时计算机操作也会变得非常简单.
特别地,用户将完全摆脱人为的硬件束缚:用户可以自由冲浪于因特网的多维时空,自由访问、自由查看、自由使用自己的数据,而不是束缚在便携式电脑的有限空间;可以通过任何桌面系统、任何便携式电脑、任何移动电话或PDA进行访问,并可对其进行跨应用程序的集成.
.
NET对开发人员来说也十分重要,因为它不但会改变开发人员开发应用程序的方式,而且使得开发人员能够创建出全新的各种应用程序,大幅提高软件生产率.
.
NET将保证完全消除当今计算技术中的所有缺陷.
.
NET定能实现确保用户从任何地点、任何设备都可以访问其个人数据和应用程序的宏伟蓝图.
.
NET把雇员、客户和商务应用程序整合成一个协调的、能进行智能交互的整体.
而各公司无疑将是这场效率和生产力革命的最大受益者.
.
NET承诺为人类创造一个消除任何鸿沟的商务世界.
1.
1.
3.
NET的核心组件.
NET的核心组件包括以下内容.
一组用于创建互联网操作系统的构件块,其中包括Passport.
NET(用于用户认证)以及用于文件存储的服务、用户首选项管理、日历管理以及众多的其他任务.
构建和管理新一代服务的基本结构和工具,包括VisualStudio.
NET、企业服务器、.
NETFramework和Windows.
NET.
能够启用新型智能互联网设备的.
NET设备软件.
.
NET用户体验.
1.
2.
NET与C#1.
2.
1支持多种编程语言的.
NET结构框架让我们翻开教科书回顾一下近十年来软件开发的历史.
多年以前,当微软的组件对象模型(ComponentObjectModel,简称COM)尚未推出时,软件的复用性对于开发人员仅仅是一种美好的憧憬.
成千上万的程序员为了处理通信、接口和不同语言之间的冲突而通宵达旦地艰辛劳动,但却收效甚微.
COM的出现改变了这一切,通过将组件改变为通用、集成型的构件.
开发人员正逐渐地从过去的繁复编程事务中解脱出来,可以选择自己最得心应手的编程语言进行编程.
然而,软件组件与应用程序之间的联合仍然是松散的,不同的编程语言与开发平台限制了部件间的互用性,其结果是产生了日益庞大的应用程序与不断升级的软硬件系统.
举个很简单的例子,只用5行C语言代码就能编写出的一个简单程序,若使用COM来编写,则需要几百行代码.
COM在带来巨大价值的同时,也大大增加了开发开销.
而.
NETFramework的出现使得一切问题都迎刃而解.
实际上,在.
NETFramework中,所有的编程语言,从相对简单的JScript到复杂的C++语言,一律是等同的.
Framework——框架,是开发人员对编程语言命令集的称呼.
.
NET框架的意义就在于只用统一的命令集支持任何的编程语言.
正如微软Web服务中心的成组产品经理JohnMontgomery所说:"只需简单地一用,.
NET框架便可消除各种异类框架之间的差异,将它们合并为一个整体.
.
NET的作用不仅仅是将开发人员从必须掌握多种框架的束缚中解脱出来,通过创建跨编程语言的公共API集,.
NET框架可提供强大的跨语言继承性、错误处理和调试功能.
现在,开发人员可以自由地选择他们喜欢的编程语言.
.
NET平台欢迎所有人的垂顾.
".
NET将使编程人员梦想的语言互用性变为近在眼前的现实.
想想看,一个在VisualBasic(VB)中定义的类能够在另一种与它完全不同的语言环境中使用、调试,甚至继承,这是多么令人兴奋的事情啊!
.
NET框架是.
NET平台的基础架构,其强大功能来自于公共语言运行时(CommonLanguageRuntime,简称CLR,该内容将在第2章中进行详细介绍)环境和类库.
CLR和类库(包括:WindowsForms,ADO.
NET和ASP.
NET)紧密结合在一起,提供了不同系统之间交叉与综合的解决方案和服务.
.
NET框架创造了一个完全可操控的、安全的和特性丰富的应用执行环境.
这不但使得应用程序的开发与发布更加简单,而且还成就了众多种类语言间的无缝集成.
.
NET采用特殊的方式编译和执行程序,先通过编译器将程序编译成微软中介语言文件,也就是MSIL(MicrosoftIntermediateLanguage)文件,MSIL将来被启动时会启动MSIL编译器,将MSIL编译成机器码,然后加载到CPU执行.
由于MSIL文件的成分并非机器码,因此,每次执行都必须启动MSIL编译器,这样会影响执行的效率.
不过MSIL码十分接近机器码,从MSIL编译成机器码然后加以执行的速度很快(微软把MSIL编译器叫做JIT(JustInTime)编译器),因此对执行效率的影响可以忽略.
在.
NET平台下,不管哪一种程序语言,最终都要编译成MSIL,因此,.
NET实现了在统一平台下开发应用程序.
1.
2.
2面向.
NET的全新开发工具C#C和C++一直是最有生命力的程序设计语言,这两种语言为程序员提供了丰富的功能、高度的灵活性和强大的底层控制能力.
而这一切都不得不在效率上作出不同程度的牺牲.
如果读者使用过包括C和C++在内的多种程序设计语言,就可以深刻体会到它们之间的区别.
如与VisualBasic相比,VisualC++程序员为实现同样的功能就要花费更长的开发周期.
由于C和C++既为人们带来了高度的灵活性,又使人们必须要忍受学习的艰苦和开发的长期性.
许多C和C++程序员一直在寻求一种新的语言,以便在开发能力和效率之间取得更好的平衡.
在随后的几年里,人们开发出了许多语言以提高软件生产率.
但这些或多或少都以牺牲C和C++程序员所需要的灵活性为代价,这样的解决方案给程序员套上了太多的枷锁,限制了他们能力的发挥.
它们不能很好地与原有的系统兼容,更令人头痛的是,它们并不总是与当前的Web应用结合得很好.
理想的解决方案,是将快速的应用开发与对底层平台所有功能的访问紧密结合在一起.
程序员们需要一种环境:它与Web标准完全同步,并且具备与现存应用之间方便地进行集成的能力,除此之外,程序员们希望它允许自己在需要时使用底层代码.
针对该问题,微软的解决方案是一种称之为C#的程序语言,C#是一种现代的面向对象的程序设计语言,它使得程序员能够在新的微软.
NET平台上快速开发种类丰富的应用程序,.
NET平台提供了大量的工具和服务,能够最大限度地发掘和使用计算及通信能力.
由于其一流的面向对象的设计,从构建组件形式的高层商业对象到构造系统级应用程序,人们都会发现C#将是最合适的选择.
使用C#语言设计的组件能够用于Web服务,这样,通过Internet可以被运行于任何操作系统上任何编程语言所调用.
不但如此,C#还能为C++程序员提供快捷的开发方式,又没有丢掉C和C++的基本特征——强大的控制能力.
C#与C和C++有着很大程度上的相似性,使得熟悉C和C++的开发人员很快就能精通C#.
另外由于Internet发展的驱动,Java迅速成为一种普及语言.
Web和Java迅速发展的原因在于:在Web上运行Java程序所需的"组件"很快成为各种Web浏览器的必备组件.
由于Java对Web功能的改进,Web得到了飞速发展.
对于许多程序员来说,C#是微软应对Java的产品.
有人甚至认为C#是微软拒绝推动非自主开发语言的结果.
这种说法过于严厉,微软有许多好的理由开发C#,其中一个(不是最重要的)理由是,它需要开发在托管环境中运行的类型安全程序.
读者可能无法立刻理解这种理由的含义,但是在学习C#的过程中将逐渐了解这一点.
C#提供了一种健壮的面向对象编程语言,以及一组令人印象深刻的、能够处理几乎所有编程任务的工具.
无论是开发桌面、分布式、Web还是移动应用程序,C#都能够胜任.
随着对C#越来越熟悉,读者一定会喜欢该语言相对较少的关键字、清晰的语法以及易用的开发环境,而且还会发现使用C#编写的程序片断可以在其他程序中重用.
1.
3C#语言的特点C#在带来对应用程序的快速开发能力的同时,并没有牺牲C与C++程序员所关心的各种特性.
它忠实地继承了C和C++的优点.
如果读者对C或C++有所了解,就会发现C#是那样的熟悉.
即使是一位新手,C#也不会给用户带来任何其他的麻烦,快速应用程序开发(RapidApplicationDevelopment,简称RAD)的思想与简洁的语法将使用户迅速成为一名熟练的开发人员.
正如前文所述,C#是专门为.
NET应用而开发出的语言.
这从根本上保证了C#与.
NET框架的完美结合.
在.
NET运行库的支持下,.
NET框架的各种优点在C#中表现得淋漓尽致.
先一起来看一下C#的一些突出特点,相信在以后的学习过程中,读者会深深体会到"#"——"SHARP"(锋利的)的真正含义.
简洁的语法精心地面向对象设计与Web的紧密结合完整的安全性与错误处理版本处理技术灵活性与兼容性1.
3.
1简洁的语法在默认的情况下,C#的代码在.
NET框架提供的"可操控"环境下运行,不允许直接进行内存操作.
与C++相比,它的最大特色是没有了指针.
与此相关的,那些在C++中被疯狂使用的操作符(例如:和".
,")已经不再出现.
C#只支持一个".
"运算符.
对于程序员来说,现在需要理解的仅仅是名字嵌套而已.
C#用真正的关键字换掉了那些把活动模板库(ActiveTemplateLibrary,简称ATL)和COM搞得乱糟糟的伪关键字,如OLE_COLOR、BOOL、VARIANT_BOOL、DISPID_XXXXX等,每种C#类型在.
NET类库中都有了新名字.
语法中的冗余是C++中的常见问题,如const和#define、各种各样的字符类型等.
C#对此进行了简化,只保留了常见的形式,而别的冗余形式从语法结构中被清除了出去.
1.
3.
2精心地面向对象设计也许人们会说,从Smalltalk开始,面向对象的话题就缠绕着任何一种现代程序设计语言.
的确,C#具有面向对象的语言所应有的一切特性:封装、继承与多态,这并不出奇.
然而,通过精心地面向对象设计,从高级商业对象到系统级应用,C#是建造广泛组件的绝对选择.
在C#的类型系统中,每种类型都可以看作一个对象.
C#提供了一个叫做装箱(boxing)与拆箱(unboxing)的机制来完成这种操作,而不给使用者带来麻烦.
C#只允许单继承,即一个类不会有多个基类,从而避免了类型定义的混乱.
在后面的学习中,读者很快会发现,C#中没有了全局函数,没有了全局变量,也没有了全局常数.
所有的一切,都必须封装在一个类中.
开发出的代码将具有更好的可读性,并且减少了发生命名冲突的可能.
整个C#的类模型是建立在.
NET虚拟对象系统(VisualObjectSystem,简称VOS)的基础之上的,其对象模型是.
NET基础架构的一部分,而不再是其本身的组成成分.
在下面将会谈到,这样做的另一个好处是兼容性.
借助于从VB中得来的丰富的RAD经验,C#具备了良好的开发环境.
结合自身强大的面向对象功能,C#使得开发人员的生产效率得到极大的提高.
对于公司而言,软件开发周期的缩短将能使它们更好地应付网络经济的竞争,在功能和效率的杠杆上,终于找到了支点.
1.
3.
3与Web的紧密结合在.
NET中,新的应用程序开发模型意味着越来越多的解决方案需要与Web标准相统一,例如超文本标记语言(HypertextMarkupLanguage,简称HTML)和XML.
由于历史的原因,现存的一些开发工具不能与Web紧密地结合.
SOAP的使用使得C#克服了这一缺陷,大规模深层次的分布式开发从此成为可能.
由于有了Web服务框架的帮助,对于程序员来说,网络服务看起来就像是C#的本地对象.
程序员们能够利用他们已有的面向对象的知识与技巧开发Web服务.
只需使用简单的C#语言结构,C#组件就能够方便地为Web服务,并允许它们通过Internet被运行在任何操作系统上的任何语言所调用.
举个例子,XML已经成为网络中数据结构传送的标准,为了提高效率,C#允许直接将XML数据映射成为结构,这样就可以有效地处理各种数据.
1.
3.
4完全的安全性与错误处理语言的安全性与错误处理能力,是衡量一种语言是否优秀的重要依据.
任何人都会犯错误,即使是最熟练的程序员也不例外:忘记变量的初始化,对于不属于自己管理范围的内存空间进行修改等.
这些错误常常产生难以预见的后果.
一旦这样的软件投入使用,寻找与改正这些简单错误的代价将会是无法承受的.
C#的先进设计思想可以有效消除软件开发中的许多常见错误,并提供了包括类型安全在内的完整的安全性能.
为了减少开发中的错误,C#会帮助开发者通过更少的代码完成相同的功能,这不但减轻了编程人员的工作量,同时也有效地避免了错误发生.
.
NET运行库提供了代码访问安全特性,它允许管理员和用户根据代码的ID来配置安全等级.
在默认情况下,从Internet和Intranet下载的代码都不允许访问任何本地文件和资源.
例如,一个在网络上的共享目录中运行的程序,如果它要访问本地的一些资源,那么异常将被触发,它将会无情地被异常扔出去,若复制到本地硬盘上运行则一切正常.
内存管理中的垃圾收集机制减轻了开发人员对内存管理的负担.
.
NET平台提供的垃圾收集器(GarbageCollection,简称GC)将负责资源的释放与对象撤销时的内存清理工作.
变量是类型安全的.
C#中不能使用未初始化的变量,对象的成员变量由编译器负责将其置为零,当局部变量未经初始化而使用时,编译器将做出提醒;C#不支持不安全的指向,不能将整数指向引用类型,例如对象,当进行下行指向时,C#将自动验证指向的有效性;C#中提供了边界检查和溢出检查功能.
1.
3.
5版本处理技术C#提供内置的版本支持来减少开发费用,使用C#将会使开发人员更加容易地开发和维护各种商业应用.
升级软件系统中的组件(模块)是一件容易产生错误的工作.
在代码修改过程中可能对现存的软件产生影响,很有可能导致程序的崩溃.
为了帮助开发人员处理这些问题,C#在语言中内置了版本控制功能.
例如:函数重载必须被显式地声明,而不是像在C++或Java中经常发生的那样不经意地被进行,这可以防止代码级错误和保留版本化的特性.
另一个相关的特性是接口与接口继承的支持.
这些特性可以保证复杂的软件可以被方便地开发和升级.
1.
3.
6灵活性和兼容性在简化语法的同时,C#并没有失去灵活性.
它不是一种无限制的语言,例如:C#不能用来开发硬件驱动程序,在默认状态下没有指针等,但是在学习过程中,读者将会发现它仍然是那样的灵巧.
如果需要,C#允许开发人员将某些类或者类的某些方法声明为非安全的,这样一来,就能够使用指针、结构和静态数组,并且调用这些非安全的代码不会带来任何其他问题.
此外,C#还提供了一个另外的东西(这样的称呼多少有些不敬)来模拟指针的功能——delegates(代表).
C#不支持类的多继承,但是通过对接口的继承,用户将获得这一功能.
正是由于其灵活性,C#允许与C风格的需要传递指针型参数的API进行交互操作,DLL的任何入口点都可以在程序中进行访问.
C#遵守.
NET公用语言规范(CommonLanguageSpecification,简称CLS),从而保证了C#组件与其他语言组件间的互操作性.
元数据(Metadata)概念的引入既保证了兼容性,又实现了类型安全.
1.
3.
7强大的应用程序类型如前所述,.
NETFramework没有限制应用程序的类型.
C#使用.
NETFramework,所以也没有限制应用程序的类型.
这里只简单介绍几种常见的应用程序类型,本书中的大部分实例都是这几种类型的,在涉及其他应用程序类型时会单独介绍.
控制台应用程序:这类应用程序是运行在DOS窗口中的纯文本应用程序,如在单元测试类库或创建后台过程时,可以使用控制台应用程序.
Windows应用程序:这些应用程序如MicrosoftOffice,有人们很熟悉的Windows外观和操作方式,使用.
NETFramework的WindowsForms模块就可以生成这种应用程序.
WindowsForm模块是一个控件库,其中的控件(如按钮、工具栏和菜单等)可用于建立Windows用户界面(UI).
Web应用程序:这些是Web页,可以通过任何Web浏览器查看.
.
NETFramework包括一个动态生成Web内容的强大系统,允许个性化、实现安全性等.
该系统叫做ActiveServerPages.
NET(ASP.
NET),人们可以使用C#通过WebForms创建ASP.
NET应用程序.
Web服务:这是创建各种分布式应用程序的新方式,使用Web服务可以通过Internet虚拟交换数据.
Web服务是一种应用程序,它可以使用标准的互联网协议,像HTTP和XML.
可以将Web服务视为Web上的组件编程.
无论使用什么语言创建Web服务,也无论Web服务驻留在什么系统上,都使用一样简单的语法.
这些类型也需要某种形式的数据库访问,这可以通过.
NETFramework的ActiveDataObjects.
NET(ADO.
NET)部分来实现.
也可以使用其他资源,如创建互联网通信、输出图形以及执行复杂数学任务的工具.
1.
4使用VS2005编写C#测试程序本书采用的是VisualStudio2005ProfessionalEdition版本,在安装VisualStudio2005ProfessionalEdition时,要选装VisualC#2005,安装成功后,有必要实际编写一个程序并运行以确定安装是否成功,这就是本节要介绍的内容.
测试程序要尽量简单,只要能确认程序安装成功即可.
启动VisualStudio2005,将看到如图1-1所示的启动界面.
图1-1VisualStudio2005启动界面1.
4.
1创建项目将光标移动到屏幕左上角,从主程序菜单栏中选择【文件】菜单,如图1-2所示.
图1-2从主程序菜单栏中选择【文件】菜单从菜单中选择【新建】|【项目】命令,打开【新建项目】对话框,如图1-3所示.
图1-3中的预定义项目模板定义了可以用C#开发的程序类型.
选择一个模板之后,VisualStudio就创建该类型的项目,并预先编写了存根代码(stubcode).
存根代码是VisualStudio为后台进程编写的预先定义的代码段.
从图1-3所示的模板中选择【Windows应用程序】模板.
此外,还应该输入创建的程序名称.
为该示例输入TestProgram名称之后,单击【确定】按钮.
图1-3【新建项目】对话框1.
4.
2VisualC#集成开发环境在学习本书的过程中,读者会在如图1-4所示的界面中花费大量的时间进行编程.
该界面称为集成开发环境(IntegratedDevelopmentEnvironment,简称IDE),它几乎包含了编写C#程序需要的所有编程工具.
图1-4集成开发环境在编程的"黑暗时代(DarkAge)"中,必须加载并运行程序编辑器才可以编写程序的源代码.
然后,必须关闭编辑器并加载语言编译程序,以便检查程序的语句是否有错误.
接下来,加载汇编程序,将源代码转换为汇编语言.
最后,加载并运行连接程序,将程序的所有单元合并成一个可执行程序.
VisualStudioIDE在一个程序中就提供了上述全部功能,这使得编写和测试程序更加容易.
1.
主要的IDE窗口如图1-4所示的IDE将屏幕分成了3个窗口.
左边的窗口显示了VisualStudio【工具箱】,它在默认情况下显示VisualStudio提供的可用对象,【工具箱】提供了可以在程序中使用的各种对象,包括文本框、标签、按钮和开发程序时会用到的其他控件.
中间的窗口为代码窗口,目前显示了一个空白的VisualStudio窗体对象,如图1-4所示,窗体中还没有放入其他对象.
也就是说,还没有将工具箱中的对象(如文本框或按钮)添加到窗体中.
本章后面会修改该窗体.
IDE的右边显示了两个子窗口.
上面的子窗口是【解决方案资源管理器】,显示了项目的当前开发状态,用于说明程序的格式和引用,以及将在后续章节中讨论的其他信息.
【解决方案资源管理器】窗口的下面是【属性】窗口,用于显示与代码窗口中当前指定对象关联的属性.
如果仔细查看图1-4中的窗体,可以注意到它的边界有几个较小的白色方框,这些白色方框称为调整框(sizingbox),其用途是将对象的大小更改为它们所依附的对象的大小.
然而,调整框还表示代码窗口中VisualStudio目前的焦点在哪个对象上.
【属性】窗口显示的也是代码窗口中当前具有焦点的对象.
图1-4中的【属性】窗口显示的是代码窗口中所示窗体的属性.
VisualStudio始终维持代码窗口中的焦点对象和【属性】窗口中所显示信息之间的关系.
2.
使用源代码窗口单击【解决方案资源管理器】窗口中的Form1.
cs,然后转移到【解决方案资源管理器】工具栏,单击源代码图标可以查看VisualStudio自动生成的代码.
图1-5显示了【解决方案资源管理器】窗口中源代码图标的位置(将光标悬停在源代码图标上时,会出现一个小提示框,显示"查看代码",如图1-5所示).
单击图1-5中所示的源代码图标之后,相关的代码如图1-6所示.
单击该源代码图标时,将发现在代码窗口顶部增加了另一个选项卡.
其中一个选项卡的名称为form1.
cs(设计),而另一个选项卡的名称为form1.
cs.
第一个选项卡用来按设计模式查看窗体;第二个选项卡是源代码模式,显示正在编写的程序的代码.
即使没有编写任何代码,VisualStudio仍然会在后台自动生成一些代码.
从图1-6可以看到TestProgram的C#源代码.
现在不必理解图1-6中的代码,此时只是在尝试编写一个非常简短的程序来检验安装是否成功.
然而,当编写自己的程序时,将会花大量时间在源代码窗口中编写代码.
图1-5代码图标图1-6代码窗口1.
4.
3向Windows窗体中添加对象不包含任何内容的窗体没有任何实际意义.
接下来修改窗体,从而在程序运行时会显示消息"Myfirstprogram".
在如图1-4所示的代码窗口的窗体对象中添加一个存放程序消息的标签(Lable).
有两种方式可以向窗体中添加标签对象.
首先,如图1-7所示,可以单击【工具箱】中的标签对象,在按住鼠标左键的同时将该标签拖动到窗体上,然后释放鼠标即可;其次,可以直接双击【工具箱】中的标签对象.
双击鼠标会使VisualStudio在代码窗口中显示的窗体左上角附近放置一个标签对象.
在代码窗口中单击该标签,按住鼠标按键的同时将标签拖曳到任意位置,然后释放鼠标即可.
确定标签对象在窗体上的位置之后,就可以设置标签的文本了.
VisualStudio自动完成的一项操作是调整标签的大小,使标签足够容纳其中的文本.
根据VisualStudio使用的默认字体大小,默认标签高度为13像素(像素是一个点或者显示器上的一个光点).
如果修改标签对象的字体大小,标签的高度将自动调整.
图1-7单击【工具箱】中的标签对象并拖曳对于不喜欢标签自动调整大小功能的用户,可以关闭该功能,将AutoSize属性的值从True改为False,如图1-8所示.
可能需要向下滚动【属性】窗口才能看到AutoSize属性,单击该文本框右边的向下箭头可以显示该属性的选项.
在本例中只能选择True或False.
选择False就关闭了标签对象的自动调整大小功能.
将AutoSize设置为False后,可以通过单击出现在该标签对象的4条边和4个角的白色调整框来调整该标签对象在代码窗口中的大小.
如图1-9所示,单击标签对象右边中间的调整框并将其向右拖动到所需的大小,以此来控制该标签的宽度,然后释放鼠标左键,使该标签对象最终显示为图1-9所示的大小.
图1-8改动AutoSize属性图1-9调整标签对象在Source窗口中的大小设置标签对象的大小之后,可以将其文本属性按用户需求修改.
例如,希望该标签对象中显示的文本是"Myfirstprogram".
但是当前该标签对象的文本属性是label1,并不是所需的文本.
将【属性】窗口的内容向下滚动到该标签对象的Text属性,将其改为"Myfirstprogram"并按Enter键,如图1-10所示.
注意,【属性】窗口标题栏下方的第一行显示了源窗口中当前对象的名称(图1-10中是label1).
图1-10中只能够显示输入到【属性】窗口的Text属性中的最后一个单词.
在源窗口中查看该标签时,3个单词会全部出现在该标签对象中.
默认情况下,标签对象的文本显示在标签的左上角.
如果将AutoSize设置为True,就不能决定标签对象的文本位置,而是由VisualStudio自动设置的.
由于已经关闭自动调整大小功能,因此可以将文本放置在标签中所需的位置.
如图1-11所示的是如何使用TextAlign属性执行该操作.
在图1-11中,TextAlign被设置为TopLeft.
在可以调整大小的标签中,有9个位置可用于放置文本.
如果希望在该标签对象的居中位置右对齐文本,可以将光标放置在图1-11中的位置,单击相应的方框就可以使该标签对象中的文本右对齐.
图1-10修改Text属性图1-11设置TextAlign属性将文本放在标签中的正确位置之后,窗体应该如图1-12所示.
注意,该标签对象中的文本现在是居中的.
图1-12最终效果1.
4.
4运行程序现在就完成了测试C#安装所需执行的工作.
如果这时程序能正常运行,就可以确定已经成功地安装C#.
有两种简单的方式可以运行程序.
最简单的方式是按下F5键,程序应该很快出现在屏幕上,同时在标签对象的居中位置显示消息.
第二种方式是单击启动调试图标.
如图1-12所示,在Window菜单选项右下方靠近窗体顶部有一个小三角形图标(在用户屏幕上,该三角形图标应该是绿色的).
单击这个绿色的三角形图标,程序就会开始运行.
官方网站:点击访问青果云官方网站活动方案:—————————–活动规则—————————1、选购活动产品并下单(先不要支付)2、联系我司在线客服修改价格或领取赠送时间3、确认价格已按活动政策修改正确后,支付订单,到此产品开设成功4、本活动产品可以升级,升级所需费用按产品原价计算若发生退款,按资源实际使用情况折算为产品原价再退还剩余余额! 美国洛杉矶CN2_GIACPU内存系统盘流量宽带i...
Hostodo商家算是一个比较小众且运营比较久的服务商,而且还是率先硬盘更换成NVMe阵列的,目前有提供拉斯维加斯和迈阿密两个机房。看到商家这两年的促销套餐方案变化还是比较大的,每个月一般有这么两次的促销方案推送,可见商家也在想着提高一些客户量。毕竟即便再老的服务商,你不走出来让大家知道,迟早会落寞。目前,Hostodo有提供两款大流量的VPS主机促销,机房可选拉斯维加斯和迈阿密两个数据中心,且都...
昔日数据,国内商家,成立于2020年,主要销售湖北十堰和香港HKBN的云服务器,采用KVM虚拟化技术构架,不限制流量。当前夏季促销活动,全部首月5折促销,活动截止于8月11日。官方网站:https://www.xrapi.cn/5折优惠码:XR2021湖北十堰云服务器托管于湖北十堰市IDC数据中心,母鸡采用e5 2651v2,SSD MLC企业硬盘、 rdid5阵列为数据护航,100G高防,超出防...