| Acknowledgments | p. xxi |
| Introduction | p. xxiii |
| Windows Applications | |
| Language Foundations | p. 3 |
| Object-Oriented Basics | p. 4 |
| Operator Overloading | p. 31 |
| Attributes | p. 33 |
| Reflection | p. 34 |
| Summary | p. 34 |
| Assembly Viewer | p. 35 |
| Demonstrated Topics | p. 36 |
| Code Listing for the Assembly Manager | p. 36 |
| Secondary Topics | p. 49 |
| Summary | p. 62 |
| Video Kiosk | p. 63 |
| Demonstrated Topics | p. 64 |
| What Is GDI+? | p. 64 |
| Examining the PlayControl | p. 67 |
| Secondary Topics | p. 93 |
| Summary | p. 100 |
| Terrarium | p. 101 |
| Demonstrated Topics | p. 102 |
| Downloading, Installing, and Configuring Terrarium | p. 103 |
| Playing Terrarium | p. 107 |
| Reviewing the Terrarium Framework | p. 116 |
| Creating Plants and Critters | p. 116 |
| Introducing Plants and Critters to the Terrarium | p. 128 |
| Secondary Topics | p. 129 |
| Serializing Objects | p. 129 |
| Summary | p. 132 |
| Building Database Applications with ADO.NET | p. 133 |
| Demonstrated Topics | p. 134 |
| A Quick Review of ADO.NET Namespaces | p. 135 |
| Connecting to DataSources | p. 135 |
| Understanding the Role of the Adapter | p. 143 |
| Working with the DataSet | p. 150 |
| Using the DataTable | p. 155 |
| Using the DataView | p. 158 |
| Using the DataReader for Read-Only Data | p. 159 |
| Displaying Information in the DataGrid | p. 159 |
| Using the Command Object | p. 161 |
| Generating SQL with the CommandBuilder | p. 162 |
| Secondary Topics | p. 162 |
| Binding a DataSet to a DataGrid | p. 163 |
| Returning a DataSet from a Web Service | p. 163 |
| Implementing a TraceListener | p. 164 |
| Summary | p. 166 |
| Tools and Components | |
| Customizing Visual Studio .NET | p. 169 |
| Demonstrated Topics | p. 170 |
| Creating a Custom Wizard | p. 170 |
| Creating a Project Template for Visual Studio .NET Wizards | p. 175 |
| Extending Visual Studio .NET with Wizards | p. 184 |
| Secondary Topics | p. 198 |
| Returning to Jscript .NET | p. 198 |
| Using the regasm Utility | p. 199 |
| Summary | p. 200 |
| Event Logger | p. 201 |
| Demonstrated Topics | p. 202 |
| Exploring System.Diagnostics Namespace | p. 203 |
| Using the EventLog Component | p. 203 |
| Tracing as a Debugging Strategy | p. 207 |
| Dumping the Stack | p. 209 |
| Managing Debug Code Automatically | p. 211 |
| Implementing the Logger | p. 216 |
| Secondary Topics | p. 221 |
| Creating Dialog Boxes | p. 221 |
| FileVersion Information | p. 224 |
| Using the Debug Class | p. 225 |
| Measuring Performance | p. 228 |
| Summary | p. 230 |
| Creating UserControls | p. 231 |
| Demonstrated Topics | p. 232 |
| Understanding UserControls | p. 232 |
| Creating a ButtonCluster Control | p. 234 |
| Creating a PickList Control | p. 244 |
| Implementing an AboutBox Control | p. 246 |
| Defining a Data Bound UserControl | p. 248 |
| Custom Painting in UserControls | p. 253 |
| Transparent UserControl Background | p. 254 |
| Extending UserControls Through Inheritance | p. 254 |
| Secondary Topics | p. 255 |
| Loading ListBoxes | p. 255 |
| Dynamically Positioning and Sizing Controls | p. 258 |
| Summary | p. 259 |
| Special Effects Text | p. 261 |
| Demonstrated Topics | p. 262 |
| Rapid Control Prototyping | p. 262 |
| Creating a Class Library | p. 268 |
| Testing Your Component | p. 278 |
| Adding the Component to the Toolbox | p. 280 |
| Creating a Merge Module | p. 281 |
| Secondary Topics | p. 282 |
| Creating a Type Converter | p. 282 |
| Implementing a Type Editor | p. 291 |
| Applying the Custom Editor with the EditorAttribute | p. 296 |
| Defining a Windows Forms Designer | p. 297 |
| Summary | p. 298 |
| Creating Custom Attributes | p. 301 |
| Demonstrated Topics | p. 302 |
| Defining the Custom Attribute Class | p. 303 |
| Implementing an Attribute Constructor | p. 303 |
| Adding Other Members to Custom Attributes | p. 305 |
| Applying the AttributeUsageAttribute | p. 306 |
| Reading Attributes | p. 307 |
| Secondary Topics | p. 309 |
| Commenting Attributes | p. 309 |
| Implementing Extender Provider | p. 311 |
| Reviewing the EditorBrowsableAttribute | p. 315 |
| Reviewing the DesignerSerializationVisibilityAttribute | p. 316 |
| Summary | p. 318 |
| Practical Reflection | p. 319 |
| Demonstrated Topics | p. 320 |
| Discovering and Using Types Dynamically | p. 320 |
| Exploring the .NET Framework with Reflection | p. 337 |
| Emitting Dynamic Assemblies | p. 348 |
| Secondary Topics | p. 363 |
| Reflection and Web Services | p. 363 |
| Implementing the Metaclass Idiom | p. 364 |
| Serializing Objects | p. 365 |
| Emitting Regular Expression Assemblies | p. 366 |
| Summary | p. 367 |
| Web Applications--IBUYSPY Portal | |
| Implementing Web Services | p. 371 |
| Demonstrated Topics | p. 372 |
| Web Services: Discovery and Description | p. 372 |
| Testing Web Services | p. 379 |
| Creating a Simple Web Service | p. 380 |
| Returning Complex Data from a Web Service | p. 388 |
| Returning a DataSet from a Web Service | p. 392 |
| Secondary Topics | p. 393 |
| Summary | p. 397 |
| IBuySpy and Dynamic User Interfaces in ASP.NET | p. 399 |
| Demonstrated Topics | p. 400 |
| Creating a Cascading Style Sheet | p. 401 |
| Implementing the Portal Banner | p. 408 |
| Secondary Topics | p. 432 |
| Administrating the Portal | p. 432 |
| Debugging the IBUYSPY Portal | p. 434 |
| Introducing Mobile Modules | p. 434 |
| Summary | p. 434 |
| Creating Custom Web Controls | p. 435 |
| Demonstrated Topics | p. 436 |
| Rendering Controls Dynamically | p. 436 |
| Reviewing the PortalModuleControl Base Control | p. 446 |
| Binding the Tabs Data | p. 447 |
| Visually Designing the Signln Module | p. 449 |
| Creating the Image Module | p. 451 |
| Creating the Links Module | p. 452 |
| Implementing the XML/XSL Transform Module | p. 457 |
| Creating a Custom Portal Module | p. 462 |
| Secondary Topics | p. 465 |
| Using the HttpServerUtility | p. 466 |
| Using the Repeater Control | p. 467 |
| Summary | p. 468 |
| Output Caching and Persisting State Information | p. 469 |
| Demonstrated Topics | p. 470 |
| Output Caching Pages | p. 471 |
| Caching Partial Pages | p. 484 |
| Caching Data | p. 486 |
| Using the Session Cache | p. 495 |
| Using the Application Cache | p. 500 |
| Secondary Topics | p. 500 |
| Configuring the Session State Server | p. 501 |
| Configuring the SQL Server for Session Management | p. 503 |
| Summary | p. 504 |
| Security and Authentication | p. 505 |
| Demonstrated Topics | p. 506 |
| Using Windows NTLM Authentication | p. 507 |
| Implementing Forms Authentication with Cookies | p. 509 |
| Implementing the Signln Module | p. 520 |
| Administering Users | p. 521 |
| Secondary Topics | p. 522 |
| Implementing Code Access Security | p. 523 |
| Index | p. 529 |
| Table of Contents provided by Syndetics. All Rights Reserved. |