AIO汇总1
CSServicedComponent
编写COM+组件
CSLinqToEntities
演示了LINQ to Entities和LINQ to DataSets。加上前一版All-In-One Code Framework(AIO)中的CSLinqToSQL,共同构成了LINQ-Enabled ADO.NET:

CSVstoExcelWorkbook
这是一个使用VSTO定制Excel workbook的例子。主要演示了Excel List Object和Actions Pane的使用。
VBClassLibrary,VBReflection
在第一版的All-In-One Code Framework(AIO)中我们加入了CSClassLibrary和CSReflection。现在加上那两个例子对应的VB.NET的实现,演示如何使用VB.NET编写一个Class library,和通过.NET Reflection动态地加载使用assembly。
MFCClipboard
这是一个演示在MFC程序里使用Clipboard相关的函数的例子。
CSWinFormLocalization,CSWinFormGeneral
CSWinFormLocalization演示的是做Winform本地化的基本步骤。此外,在CSWinFormGeneral中,我们加入了form间传参的小例子。
CSWindowsHook
演示了如何编写.NET代码hook全局的Low Level mouse和keyboard事件,以及hook本地的Windows事件。
CppStackOverflow,CppStackCorruption
演示了stack overflow和stack corruption最典型的场景。在这两个example对应的ReadMe.txt中,您可以找到关于如何分析,避免stack overflow, stack corruption的详细介绍。
MFCSafeActiveX
这是一个使用MFC编写可以被host在web page中的ActiveX control的基本框架。在本次release中,我们根据用户的反馈添加了从ActiveX control call web page中javascript的代码示例。相关帖子:
JavaScript callback in ActiveX Template Library newsgroup
pass Javascript callback into MFC ActiveX in ActiveX Template Library newsgroup
CppCLIWrapLib
这个事例demo了如何为native C++编写的库做一个C++/CLI的wrapper,从而native C++ 库中的功能可以轻松地被任何.NET的程序复用。
CSSocketServer, CSSocketClient
这两个example演示了如何编写Visual C#代码来使用socket,从而做IPC或RPC。
CSAutomateWord, VBAutomateWord, CppAutomateWord, VBAutomateExcel, CppAutomateExcel, CSAutomateOutlook, VBAutomateOutlook
这一系列的example都是和Office automation相关的。以Microsoft Word为例,CSAutomateWord, VBAutomateWord, CppAutomateWord演示了使用不同编程语言(C#, VB.NET, C++)来automate Microsoft Word做相同的事情。您可以比较这三个example的code,观察不同语言做automation的差别。
CSVstoServerDocument
使用VSTO的ServerDocument class从VSTO customized Office文档中提取相关信息,并以编程方式添加或删除VSTO customization。
CppRedirectConsole
编写native C++代码redirect console程序的stdin和stdout。
CSWinFormDesigner
演示了最典型的WinForm Designer的制作方法。真的很cool!
CSEncryption, CSDigitalSignature
这两个example是和Cryptography相关的。CSEncryption演示了加解密。CSDigitalSignature则是和签名相关。
CSWPFThreading
这是AIO中第一个和WPF相关的例子。演示了WPF中worker thread和UI thread的best practices。考虑到对WPF感兴趣的人较多,我们team打算接下来花大力气打造更多更精彩的WPF example。
CSWinFormControls, CSWinFormObjPersistence, CSWinFormDragAndDrop, CSWinFormGraphics, CSWinFormTimeConsumingOpr, CSWinFormPrinting, CSWinFormPassValueBetweenForms
这些都是和WinForm开发相关的典型例子。涵盖了WinForm control 自定义,对象持久化,Drag & Drop,GDI+绘图,WinForm中多线程的应用,Form的打印,以及多个Form间相互传值的方法。如果您有任何WinForm方面的sample request,请在此发帖。我们会对您的request进行评估,并加入到All-In-One Code Framework(AIO)。
CSExcelAutomationAddIn
Excel automation add-in演示的是如何向Excel添加User Defined Functions (UDF)。
CppAutomateOutlook
编写native C++的代码来automate Outlook。
VBLinqToDataSets, VBLinqToObject
这两个example是All-In-One Code Framework 2009-4-11中CSLinqToDataSets, CSLinqToObject的VB.NET版本,演示了LINQ to DataSets和LINQ to Object技术。
CSLinqToXml, VBLinqToXml
CSLinqToXml和VBLinqToXml主要演示了如何在C#和VB.NET中使用LINQ to XML技术创建和查询XML文档。创建XML文档的数据源主要选取了内存对象以及SQL Server数据库。在创建和查询XML文档时,VBLinqToXml更是使用了VB.NET 9.0的新特性--XML literals,来直接对XML文档进行操作。
CppWindowsHook
编写C++代码做全局和局部钩子。您可以将它和CSWindowsHook例子进行对比,看看.NET和native C++在Windows hook上的不同。
CppWindowsDialog
这个例子演示了native C++ Windows Application中modal dialog和modaless dialog的显示。
CppHeapCorruption
如果您想了解heap corruption最典型的原因,场景,检测和Debug的方法,请参看这个例子。
CSUac
这是一位瑞典的朋友贡献的一个和Vista UAC相关的sample code。演示了如何判断当前进程的Integrity level,以及如何通过ShellExecute(Ex)或者manifest文件来elevate一个进程。
CSCustomAuthorization
.NET中提供了一套框架来自定义authentication和authorization。这个sample告诉您如何使用这套框架。
VBLinqToSQL, VBLinqToEntities
他们是LINQ to SQL和LINQ to Entities 示例的VB.NET 版本。C#版本可参见CSLinqToSQL以及CSLinqToEntities。
VBExcelAutomationAddIn
这是Excel Automation Add-in 示例(向Excel添加User Defined Functions (UDF))的VB.NET版本。C#版本参见CSExcelAutomationAddIn。
CSVstoVBAInterop
VSTO也可以和Office中VBA编写的macro交互?CSVstoVBAInterop告诉您如何做到这一点。
CSWinFormDesigner
我们增强了WinForm Designer相关的example。添加了PropertDisplayOrder (演示了如何改变对象的属性在属性窗口上的显示顺序)和CustomUITypeEditor (演示了如何自定义一个设计时的属性编辑器), 加上过去添加的Adornment (演示了如何在Designer上进行绘制), CustomPropertyTab (演示了如何在属性窗口上添加一个标签页), EnableDesignTimeFuncForChildCtrl (演示了如何让子控件具有设计时的功能), MouseEvents (演示了如何捕捉设计时时的鼠标事件), 和SmartTags (演示了设计时的智能标签功能),这些都是MSDN论坛中经常会被问到的WinForm Designer场景。
CppWindowsUserControls, CppWindowsCommonControls
Windows中的control集中在user32.dll和comctl32.dll中。比如常见的Button, Static, Progress Bar, Tooltip等等。CppWindowsUserControls和CppWindowsCommonControls演示了在C++中不使用MFC如何创建和使用这些control。
CppResourceLeaks
Resource leaks相信是让每个程序员都会头疼的一个问题。CppResourceLeaks演示了handle leak和memory leak发生的场景,以及检测,修复的方法。
CSLinqExtension
CSLinqExtension对LINQ查询的数据源进行了拓展,其中包括了几个简单的LINQ拓展库,比如LINQ to CSV、LINQ to File System、LINQ to Reflection以及LINQ to String。LINQ to CSV的功能是将CSV文件的数据逐行解析成字符串数组;LINQ to File System可以将文件夹中的文件以拓展名进行归类并得到其中最大的文件;LINQ to Reflection的功能是在.NET Assembly中,按函数返回值类型对导出类的函数进行归类;LINQ to String的功能包括了过滤字符串中的数字字符,统计单词的出现频率,以及搜索含有特定单词集合的句子。在今后的发布的All-In-One Code Framework(AIO)中,我们还将新增一些其他的LINQ拓展库,比如LINQ to WMI。
CSOfficeSharedAddIn, CppOfficeManagedCOMAddInShim
CSOfficeSharedAddIn是一个最基本的Office Shared COM AddIn。它由.NET语言编写完成,而且不依赖于VSTO。为了确保这种AddIn和别的Office AddIn相互隔离,开发人员可以在这个managed COM AddIn的基础上添加一个AddIn Shim。Shim的工作原理就是让Office先加载Shim dll (Shim dll是一个纯native C++编写的dll),再有这个Shim dll 加载.NET Runtime,创建一个新的AppDomain起隔离作用,最后将原来的managed COM AddIn 程序集load到这个AppDomain中去。CppOfficeManagedCOMAddInShim演示的就是这样一个AddIn Shim。
CSVstoGetWrapperObject
演示了如何从现有的Office COM对象中得到VSTO对象的包装。
CSAutomatePowerPoint, VBAutomatePowerPoint, CppAutomatePowerPoint
这三个例子演示了如何编写VC#, VB.NET和native VC++代码来automate Microsoft PowerPoint。
CSWinFormDataGridView
自定义DataGridView的sample大全。收罗了MSDN论坛里最经常被问到的自定义场景。比如,场景1. 使用除标准DataGridView编辑控件(TextBox, CheckBox, ComboBox, Button, Link, Image)之外的其他控件进行编辑,如MaskedTextBox, DateTimePicker控件等。这个需求一般可以通过两种方法来解决,一种是自定义个一个DataGridView列,详见 CustomDataGridView 这个例子;另一种是在DataGridView进入编辑状态时,将所需的编辑控件放置于当前编辑单元格中,在编辑结束的时候将该控件隐藏,详见 EditingControlHosting 这个例子。场景2. 大数据量显示。常态下在DataGridView控件中显示超大数据量效果不佳,为增强超大数据量的显示效果,一般有以下两种方法: 一是分页显示,详见 DataGridViewPaging 这个例子; 二是使用VirtualMode,在数据需要显示时才从数据库中读取,详见 JustInTimeDataLoading这个例子。场景3. 多层表头。 有时为了使数据显示得更有组合性,我们会希望能显示多层的表头,实现方法详见 MultipleLayeredColumnHeader 这个例子。
CppUac
这是Vista UAC相关的一个native C++的例子。和CSUac例子对应,演示了如何判断当前进程的Integrity level,以及如何通过ShellExecute(Ex)或者manifest文件来elevate一个进程。
CSControlFirewall
演示了Windows Firewall API的使用。
CppWindowsSubclassing
演示了如何编写native VC++代码对当前应用程序内的窗口进行子类化。子类化是一种非常常用的方法来自定义一些Window或control的行为。一般在VC++中有两种方法作子类化。具体的请参见该示例代码和文档。
CSCodeDOM
这是.NET CodeDOM的sample。演示了如何使用.NET CodeDOM 技术在运行时动态生成和编译代码。
CppSynchronousIO, CppAsynchronousIO
演示了同步I/O和异步I/O。异步I/O中除了demo了最基本的GetOverlappedResult, WaitForSingleObject等操作,还演示了Alertable I/O, I/O Completion Port这些高级API。
CppSparseFile, CSSparseFile, VBSparseFile
这三个example演示了如何使用不同编程语言(C++, C#, VB.NET)操作NTFS 稀疏文件(sparse file)。所谓稀疏文件指的是文件中出现大量的0数据。这些数据对我们用处不大,但却占用了我们好几GB甚至TB的空间。NTFS文件系统对此进行了优化,那些无用的0字节可以被标志为稀疏区域,使得这些0字节几乎不占用任何空间。所以你会发现,一个稀疏文件可能表面上有100GB,实际占用的磁盘空间却只有几KB。CppSparseFile, CSSparseFile, VBSparseFile 包含了稀疏文件的所有常见操作,如创建,查询稀疏区域,获得稀疏文件实际大小,检查一个文件是否是稀疏文件等等。
CppFileHandle
这是一个和文件句柄相关的例子。我们在MSDN论坛作技术支持过程中,经常遇到客户询问如何用编程方法枚举某一个进程打开的所有文件,或者给定一个文件,如何知道哪些进程正打开着它。虽然Process Explorer可以很轻松地回答上述两个问题,仍有不少客户追问如何自行编程实现这样的功能。这就需要用到WMI class Win23_Process,或者用到undocumented API,NtQuerySystemInformation。CppFileHandle演示的就是后者。WMI的解决方案我们会在近期加入到CppFileHandle中。
CSListFilesInDirectory
这个sample code同样源于一个在论坛里经常被问到的问题:.NET BCL中的Directory.GetFiles 方法可以枚举某个文件夹下的文件,但它有个很致命的缺点。Directory.GetFiles是等枚举到所有文件以后才会返回。如果该文件夹下的文件很多,或者这是一个网络文件夹,即访问速度比较慢,Directory.GetFiles就会hang在那里。你可能就需要同步地等待它的返回。一个理想的解决方案是,每枚举到一个文件,就立刻返回这个文件,而不是等待枚举到所有文件。CSListFilesInDirectory就演示了如何做到这一点。
CSImpersonateUser, VBImpersonateUser
这两个是在.NET中做impersonation的例子。其中封装了一个简单安全的impersonation的类,让你轻松模拟某个用户帐号进行操作。
VBUac
这是Vista UAC相关的一个VB.NET的例子。和CSUac、CppUac例子对应,演示了如何判断当前进程的Integrity level,以及如何通过ShellExecute(Ex)或者manifest文件来elevate一个进程。
CSSMTPSendEmail, VBSMTPSendEmail
顾名思义,CSSMTPSendEmail 和 VBSMTPSendEmail 演示了如何使用SMTP发送电子邮件。示例中还演示了两个经常问到的场景:添加附件和在邮件中嵌入图片。
ATLCOMClient
这是一个ATL编写的COM客户端。其中重点演示了如何在ATL中处理COM的event。
CSSL3PlaneProjection, VBSL3PlaneProjection
这些sample演示了如何使用Silverlight 3新增的3D透视特性。PlaneProjection是3D透视中最常被使用的一种透视对象。在示例中,你可以看到如何通过调整PlaneProjection对象的属性来控制立体投影。投影以后,被投影的控件仍能正常工作。
CSSL3PixelShader, VBSL3PixelShader
PixelShader效果同样也是Silverlight 3中新增的特性。示例演示了如何使用内建的DropShadowEffect效果,以及如何创建和使用一个自定义的ShaderEffect。
CSSL3FullScreen, VBSL3FullScreen
这两个sample则演示了Silverlight 3的全屏特性。在全屏模式下,部分键盘事件是无法捕获的。
CSSL3Input, VBSL3Input
演示如何在Silverlight 3中处理鼠标和键盘事件,以及如何实现鼠标拖拽功能。
CSSL3Text, VBSL3Text, XamlSL3Text
CSSL3Text, VBSL3Text, XamlSL3Text展示了Silverlight 3中和文本相关的特性,包括如何创建一个简单的TextBlock,如何在这TextBlock中加入LineBreak或高级format,等等。这三个sample通过不同的编程语言(C#, VB.NET, Xaml) 展示出一个统一的UI,以方便读者比较其不同的实现方法。
XamlSL3StyleControlTemplate
XamlSL3StyleControlTemplate是和Silverlight3中Style和ControlTemplate相关的sample。
CSADONETDataService, CSADONETDataServiceClient
CSADONETDataService是用Visual C#编写的ADO.NET 数据服务框架的服务端程序。它引用了三种不同的数据源:ADO.NET 实体数据模型、LINQ To SQL 数据类、以及简单的内存数据。同时它也自定义了服务操作和侦听器来对ADO.NET数据服务的URI资源进行扩展。CSADONETDataServiceClient是ADO.NET数据服务框架的客户端程序。它使用了以下几种不同的方式(LINQ、ADO.NET数据服务查询选项、自定义的ADO.NET数据服务操作)来对ADO.NET数据服务服务端的多种数据源(ADO.NET 实体数据模型、LINQ To SQL 数据类、以及简单的内存数据)进行更新和查询。
VBASPNETFileUpload, VBASPNETLocalization
这两个是ASP.NET的sample。分别演示了ASP.NET中文件上传功能的制作,以及ASP.NET Globalization和Localization的功能。
CSTFSWorkItemObjectModel
CSTFSWorkItemObjectModel演示如何通过Team Explorer 2008的Object Model来访问TFS server。要运行这个sample,你需要确保你已安装了Team Explorer 2008,并且在sample的app.config里正确地配置了project name和TFS server URL。
ATLShellExtDragAndDropHandler, ATLShellExtInfotipHandler, ATLShellExtPropSheetHandler, ATLShellExtContextMenuHandler
这些都是Windows Shell Extension 相关的sample。分别演示了Drag and Drop Handler, Infotip Handler, PropertySheet Handler, Context Menu Handler的制作。不久我们还将推出Data handler, Drop handler, Icon handler, Thumbnail Image handler, Metadata handler, Column handler, Copy hook handler, Icon Overlay handler, Search handler, Namespace Extension的例子。敬请期待。
CSWin7TriggerStartService, VBWin7TriggerStartService
Trigger-start Service是Windows 7中的一大新特性。在Win7中Windows Service可以注册一些事件如USB插入。当这些事件触发时,Windows Service自动启动或关闭。如此一来,Service可以按需启动,从而提高系统的整体性能。CSWin7TriggerStartService和VBWin7TriggerStartService 演示的就是如何编写.NET代码开发Trigger Start Service。示例中你可以看到如何注册USB插入事件,以及如何注册网络连接和断开事件。
CppWin7ShellLibrary, CSWin7ShellLibrary
Shell Library同样是Windows 7中新引入的概念。Library是从过去的My Documents这个概念自然演变过来的。A library is a common store of user defined locations that applications can leverage to manage user content as their part of the user experience. CppWin7ShellLibrary和CSWin7ShellLibrary演示如何创建、打开、删除、重命名shell library,以及如何添加、删除、枚举shell library中的用户自定义文件夹。
CppCheckOSVersion, CSCheckOSVersion
这两个示例演示了如何正确检测当前操作系统版本。系统版本的检测和应用程序兼容性有着密切的关系。顺便说一下,Windows Vista的系统版本号是6.0。Windows7的操作系统版本是6.1,而不是7.0或7.1。
CSASPNETCascadingDropDownList
CSASPNETCascadingDropDownList 示例包含了两个例子:有页面刷新的级联下拉框 和无页面刷新的级联下拉框。前者主要是利用DropDown List 的SelectedIndexChanged 事件来绑定子DropDown List;第二个主要是使用XMLHttpRequest和JavaScript在客户端实现无刷新的级联DropDown List。
CSASPNETPageValidation
通过一个简单的用户名注册示例,介绍如何使用一组ASP.NET 验证控件对一些页面的通信类进行验证。
CSASPNETAjaxExtender
CSASPNETAjaxExtender 的实例主要介绍了如何使用ASP.Net Ajax Extender模型创建Extender控件。并且,在实例中描述了创建TimePicker Extender 控件的过程。TimePicker控件是一个时间选择器,用户可以通过拖动时间指针来选择时间。
VBADONETDataService, VBADONETDataServiceClient
这两个是ADO.NET Data Service 示例的VB.NET版本。C#版本请参见CSADONETDataService和CSADONETDataServiceClient。
CSXmlSerialization, VBXmlSerialization
演示了如何将一个.NET对象XML 序列化到一个文件,再从这个文件反序列化成一个.NET对象。
CSWinFormSplashScreen
演示了两种给C#编写的WinForm程序添加splash screen的方法。方法一:在Application.Run 应用程序的主窗体之前,先Application.Run一个splash screen窗体。方法二:添加对Microsoft.VisualBasic的引用,然后通过Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase类来实现自定义的splash screen
CSWin7TaskbarAppID,VBWin7TaskbarAppID,CppWin7TaskbarAppID
Application User Model ID (AppID) 是Windows 7任务栏新引入的一大特性。拥有同一个AppID的应用程序,其在Windows 7的任务栏按钮会被定义在同一个分组中,彼此重叠在一起。同时AppID也是定义应用程序Jump List的重要依据。CSWin7TaskbarAppID、VBWin7TaskbarAppID演示了如何通过Windows API Code Pack设置进程级别的AppID,以及修改进程中特定窗口的AppID。CppWin7TaskbarAppID则演示了使用C++和Windows API设置进程级别的AppID,以及修改进程中特定窗口的AppID,此范例需要安装Windows 7 SDK才能成功编译。
CSWin7TaskbarOverlayIcons,,VBWin7TaskbarOverlayIcons,CSWin7TaskbarProgressbar,VBWin7TaskbarProgressbar
应用程序可以在其Windows 7的任务栏按钮上设置Overlay Icons与Progressbar以显示其不同的工作状态与任务进度。CSWin7TaskbarOverlayIcons,,VBWin7TaskbarOverlayIcons,CSWin7TaskbarProgressbar,VBWin7TaskbarProgressbar演示了如何应用Windows API Code Pack设置应用程序任务栏按钮的Overlay Icons以及Progressbar的进度与状态。
CSWin7TaskbarThumbnail,VBWin7TaskbarThumbnail
应用程序可自定义其任务栏Thumbnail预览效果和Thumbnail工具栏按钮是Windows 7新引入的特性。CSWin7TaskbarThumbnail,VBWin7TaskbarThumbnail演示了如何应用Windows API Code Pack设置应用程序任务栏Thumbnail预览的效果以及自定义Thumbnail工具栏按钮。
CSWin7TaskbarJumpList,VBWin7TaskbarJumpList
Jump List是Windows 7新引入的又一特性。通过Jump List,用户可以更方便快捷地找到自己近期或经常通过某一个应用程序打开的文件。应用程序还可以在Jump List中添加用户任务以方便用户打开其他相关的应用程序,在Jump List中自定义类别、文件项目、文件链接。CSWin7TaskbarJumpList,VBWin7TaskbarJumpList演示了如何以AppID注册应用程序以及文件句柄,通过Window API Code Pack设置Jump List用户任务和自定义Jump List类别、文件项目和文件链接。
XAMLSL3SplashScreen
XAMLSL3SplashScreen 演示了如何为Silverlight程序设置自定义的启动画面。当Silverlight程序正在下载时,默认情况下会有一个自带的启动画面。如果想要改变这个启动画面,我们可以自己定义一个。此外,在ReadMe.txt中还谈到了一些使用SplashScreen的限制。
CSSL3Animation, VBSL3Animation
CSSL3Animation和VBSL3Animation演示了如何在Silverlight中创建动画效果。由于Silverilght中自带的动画效果类很多,不可能在一个项目中全部涉及。因此项目中只包括了Point和 Double数据类型相关的动画。其他动画效果的代码大同小异,不在此赘述。
项目演示了:
• 如何通过XAML来进行PointAnimation
• 如何通过Code Behind来进行PointAnimation
• 如何用PointAnimation来对自定义的属性做动画效果
• 如何使用Silverlight 3新功能: Easing
• 如何使用关键帧做出动画效果
CSSL3DeepZoom, VBSL3DeepZoom
Silverlight deep zoom 提供了一种高效的方式来展示高分辨率的图片以及大量图片的集合。用户在一开始下载的是大型图片(集合)的缩略图,这个缩略图的分辨率比较低。随着他们渐渐放大图片上的某一部分,分辨率较高的图片中的那一部分会被下载到客户端。此外,你还可以在自己的程序中对deep zoom进行大量的自定义,使deep zoom的场景完美地融合到你的程序中。这个例子展示了一些常见的deep zoom的自定义方法。它包括:
• 使用Deep Zoom Composer来创建deep zoom场景。
• 下载并解析metadata。
• 在一个collection场景中实现hit test。
• 创建一个非位图的UIElment,并且让它和MultiScaleImage一起移动,协同缩放。
• 在一个collection场景中移动一张sub image。
• 使用DeepZoomTools.dll在代码中动态创建deep zoom场景。
CSSL3WriteableBitmap
WriteableBitmap是Silverlight 3的一个新功能。你可以用它来操作位图中的每一个像素。你可以想到很多很多应用场景,不过,出于安全性考虑(例如,Silverlight不允许你写使用指针的unsafe代码),和同样的桌面程序相比,你可能需要写更多的代码。这个例子包括3个小的示例,展示了使用WriteableBitmap的常见场景:
• Gun shoot。你可以选择两张不同大小的图片。该示例将会把他们缩放到相同的分辨率,并且将一张图片覆盖于另一张上方。当你点击上方的图片开枪时,一个枪痕将会显现,并且你会射穿上面那幅画,从而可以看到下面的画的内容。该示例展示了如何将不同分辨率的元图片缩放到相同的分辨率,以及如何修改某个单独的像素。
• Fill color。该示例实现了绘图软件中常见的一个场景:油漆桶,也就是为某块区域填充上同样的色彩。它展示了如何在Silverlight WriteableBitmap中应用常见的图形学算法,并且还通过模拟CLR调用堆栈的方式解决了过深的递归可能造成的stack overflow问题。
• Screenshot。该示例展示了WriteableBitmap的另一功能:创建屏幕截图,并且把结果保存为一个bmp文件。它也说明了该功能的一些局限性。
为了发掘出WriteableBitmap的强大潜力,你需要一些图形学的知识。例如,你必须掌握位图是如何在内存中存储的,必须了解关于像素和颜色的基本知识,等等。为了提高效率,你还必须学会位移运算。
CSSL3CustomControl
CSSL3CustomControl 是一个silverlight library 项目。 通过实现一个可显示高亮文本的HighLightTextBlock,项目展示了如何创建自定义控件。以及通过关联项目XAMLSL3StyleControlTemplate,展示如何利用style来更改HighLightTextBlock外观。
CSADONETDataServiceSL3Client, VBADONETDataServiceSL3Client
CSADONETDataServiceSL3Client和VBADONETDataServiceSL3Client 演示了如何在Silverlight中访问ADO.NET Data Services。在项目中,使用ADO.NET Data Services暴露出的URL来生成代理类,然后通过代理类与服务器端进行通信,进行查询、修改、添加、删除的操作。在项目中一共生成了三个代理类,分别对应服务器端程序CSADONETDataService中的三个服务。此外,项目中的ReadMe.txt还介绍了一些在使用Silverlight访问ADO.NET Data Services时可能遇到的情况。
CSASPNETMVCFileDownload
这是AIO中第一个ASP.NET MVC例子。10月份我们会有更多的ASP.NET MVC示例问世。CSASPNETMVCFileDownload演示了一个文件下载的例子。其中包括注册自定义URL路由,以及自定义ActionResult。
CSASPNETGridView, CSASPNETDataPager, CSASPNETMenu
这三个示例分别演示了ASP.NET GridView, DataPager, Menu控件的用法。
VBASPNETMasterPage
这个例子示范了在ASP.NET模板页的使用。使用 ASP.NET 母版页可以为应用程序中的页创建一致的布局。单个母版页可以为应用程序中的所有页(或一组页)定义所需的外观和标准行为。然后可以创建包含要显示的内容的各个内容页。当用户请求内容页时,这些内容页与母版页合并以将母版页的布局与内容页的内容组合在一起输出。
CSASPNETOutputCache
CSASPNETOutputCache演示了ASP.NET Output Cache以增加页面响应速度。相关blog: http://blogs.msdn.com/codefx/archive/2009/09/07/asp-net-output-cache.aspx。
VBListFilesInDirectory
这是CSListFilesInDirectory示例的VB.NET版本。其源于一个在论坛里经常被问到的问题:.NET BCL中的Directory.GetFiles 方法可以枚举某个文件夹下的文件,但它有个很致命的缺点。Directory.GetFiles是等枚举到所有文件以后才会返回。如果该文件夹下的文件很多,或者这是一个网络文件夹,即访问速度比较慢,Directory.GetFiles就会hang在那里。你可能就需要同步地等待它的返回。一个理想的解决方案是,每枚举到一个文件,就立刻返回这个文件,而不是等待枚举到所有文件。CSListFilesInDirectory和VBListFilesInDirectory演示了如何做到这一点。
ATLShellExtIconHandler, ATLShellExtIconOverlayHandler
这两个Windows Shell Extension的例子分别演示了Icon Handler和Icon Overlay Handler的开发。
CSVSPackage
VSPackages 是用来扩展Visual Studio集成开发环境的模块。通过VSPackage, 我们可以提供自定义的UI元素,比如工具栏,定制的代码编辑器以及UI设计器,还通过VSPackage来提供自定义的service。实际上,VSPackage是构成Visual Studio的最基本的单元,Visual Studio 本身就是由众多VSPackage构成的。本例就是演示如何通过Visual Studio Integration Package Wizard 来创建一个简单的VSPackage。在以后的AIO示例中,我们还将增一些示例来说明如何通过VSPackage来扩展Visual Studio。
CSVSPackageState
此示例展示了插件选项状态持久化,和属性窗口状态。此示例并不包含解决方案和项目文件的状态管理,它们将会在项目文件插件示例中演示。
• 工具/选项 页面
在Visual Studio中选择 工具/选项 目录打开选项窗口。树状导向面板中包含了选项分类和每个分类中的选项页面。当你选择页面时,选项出现在右边面板。此页面使用户可以改变选项值,也就是VS插件的状态。DialogPage类实现了IProfileManager,它提供了选项页面和用户设定的持久化功能。LoadSettingsFromStorage和SaveSettingsToStorage方法默认实现了把属性存入注册表中用户部分,前提是属性是可以被转化为字符串形式。
• 属性窗口
在此示例中,我们将使用ToolWindow来展示属性窗口。当用户选中Visual Studio中的对象时, 对象上所有公共的属性都会像是在属性窗口中。如要用代码来选中一个对象时,需要将此对象放入一个选择容器中。我们使用STrackSelection 服务来通知Visual Studio。
浙公网安备 33010602011771号