Introduction |
|
xxi | |
Assessment Test |
|
xxxv | |
|
Part I Visual Basic .NET Overview |
|
|
1 | (254) |
|
A .NET Framework Overview |
|
|
3 | (20) |
|
|
5 | (2) |
|
|
7 | (3) |
|
|
10 | (2) |
|
Assemblies and Application Domains |
|
|
12 | (1) |
|
.NET Framework Base Class Library |
|
|
13 | (4) |
|
|
17 | (1) |
|
|
18 | (1) |
|
|
19 | (2) |
|
Answers to Review Questions |
|
|
21 | (2) |
|
An Overview of Object-Oriented Programming |
|
|
23 | (42) |
|
Understanding Classes and Objects |
|
|
24 | (7) |
|
|
25 | (5) |
|
|
30 | (1) |
|
|
31 | (26) |
|
|
35 | (5) |
|
|
40 | (11) |
|
Interfaces and Interface Inheritance |
|
|
51 | (5) |
|
|
56 | (1) |
|
|
57 | (1) |
|
|
57 | (1) |
|
|
58 | (4) |
|
Answers to Review Questions |
|
|
62 | (3) |
|
Handling Errors with Visual Basic .NET |
|
|
65 | (26) |
|
Structured Exception Handling |
|
|
66 | (1) |
|
The System.Exception Class |
|
|
66 | (1) |
|
Implementing Structured Exception Handling |
|
|
67 | (15) |
|
|
79 | (3) |
|
|
82 | (1) |
|
|
82 | (1) |
|
|
82 | (1) |
|
|
83 | (6) |
|
Answers to Review Questions |
|
|
89 | (2) |
|
|
91 | (72) |
|
|
92 | (1) |
|
The System.Data Namespace |
|
|
92 | (1) |
|
Connecting to Data Sources |
|
|
93 | (9) |
|
Connecting to Microsoft SQL Server 7.0+ Databases |
|
|
93 | (6) |
|
Connecting to OleDb Data Sources |
|
|
99 | (3) |
|
|
102 | (12) |
|
Working with the Command Object |
|
|
102 | (6) |
|
Reading Data with a DataReader Object |
|
|
108 | (6) |
|
|
114 | (31) |
|
Working with the DataSet Object |
|
|
115 | (2) |
|
Working with the DataAdapter Object |
|
|
117 | (4) |
|
Working with the DataTable Object |
|
|
121 | (3) |
|
Working with the DataRow Class |
|
|
124 | (7) |
|
Implementing Typed DataSets |
|
|
131 | (5) |
|
Relating DataTables with the DataRelation Object |
|
|
136 | (5) |
|
Filtering and Sorting with the DataView Object |
|
|
141 | (4) |
|
Handling Data-Centric Exceptions |
|
|
145 | (9) |
|
|
145 | (2) |
|
|
147 | (6) |
|
|
153 | (1) |
|
|
154 | (1) |
|
|
155 | (1) |
|
|
155 | (1) |
|
|
156 | (5) |
|
Answers to Review Questions |
|
|
161 | (2) |
|
|
163 | (42) |
|
XML and the .NET Framework |
|
|
164 | (28) |
|
|
164 | (1) |
|
Reading from XML Documents |
|
|
164 | (20) |
|
|
184 | (8) |
|
|
192 | (6) |
|
|
192 | (1) |
|
Reading Data from a Flat File |
|
|
193 | (2) |
|
|
195 | (3) |
|
|
198 | (1) |
|
|
199 | (1) |
|
|
199 | (1) |
|
|
200 | (3) |
|
Answers to Review Questions |
|
|
203 | (2) |
|
|
205 | (50) |
|
Creating and Managing .NET Components |
|
|
206 | (10) |
|
Creating a .NET Component |
|
|
207 | (2) |
|
|
209 | (3) |
|
Calling .NET Components from COM |
|
|
212 | (4) |
|
|
216 | (11) |
|
Using COM or COM+ Components from a Windows Form |
|
|
217 | (8) |
|
Describing COM Types through Interop Assemblies |
|
|
225 | (2) |
|
Using COM or COM+ Components from a Web Form |
|
|
227 | (3) |
|
Instantiating and Invoking a Web Service |
|
|
230 | (11) |
|
Making Asynchronous Calls to a Web Service |
|
|
239 | (2) |
|
|
241 | (5) |
|
Using the Platform Invoke Architecture |
|
|
241 | (2) |
|
Setting Up a Call to Unmanaged Code |
|
|
243 | (3) |
|
|
246 | (1) |
|
|
246 | (1) |
|
|
247 | (1) |
|
|
248 | (5) |
|
Answers to Review Questions |
|
|
253 | (2) |
|
Part II Developing Windows Applications with Visual Basic .NET |
|
|
255 | (292) |
|
|
257 | (30) |
|
Introduction to Windows Forms |
|
|
258 | (10) |
|
|
259 | (1) |
|
Adding and Setting Windows Forms Properties |
|
|
260 | (2) |
|
Overview of Common Form Events |
|
|
262 | (6) |
|
Working with Windows Forms |
|
|
268 | (11) |
|
|
268 | (4) |
|
|
272 | (2) |
|
Windows Forms Visual Inheritance |
|
|
274 | (5) |
|
|
279 | (1) |
|
|
279 | (1) |
|
|
280 | (1) |
|
|
281 | (4) |
|
Answers to Review Questions |
|
|
285 | (2) |
|
Working with Windows Controls |
|
|
287 | (58) |
|
|
288 | (12) |
|
Setting Properties on Windows Controls |
|
|
289 | (2) |
|
Loading Controls Dynamically |
|
|
291 | (3) |
|
Working with ActiveX Controls |
|
|
294 | (4) |
|
|
298 | (2) |
|
Creating Custom Windows Controls |
|
|
300 | (22) |
|
Creating a Control with Visual Inheritance |
|
|
300 | (6) |
|
Data Binding in Windows Forms |
|
|
306 | (8) |
|
Using Windows Controls within Internet Explorer |
|
|
314 | (3) |
|
Configuring Control Licensing |
|
|
317 | (5) |
|
|
322 | (8) |
|
Implementing Context Menus |
|
|
323 | (3) |
|
|
326 | (4) |
|
Printing from Windows Forms |
|
|
330 | (4) |
|
|
334 | (1) |
|
|
334 | (1) |
|
|
335 | (1) |
|
|
336 | (6) |
|
Answers to Review Questions |
|
|
342 | (3) |
|
Windows Accessibility and Usability |
|
|
345 | (46) |
|
|
346 | (6) |
|
|
346 | (1) |
|
Validating Data Using Regular Expressions |
|
|
347 | (5) |
|
Validating Non-Latin User Input |
|
|
352 | (1) |
|
Using Validation Controls |
|
|
352 | (4) |
|
Implementing Globalization and Localization |
|
|
356 | (15) |
|
Understanding Locale and Culture in Windows and .NET |
|
|
356 | (1) |
|
Implementing Localizability for the User Interface |
|
|
356 | (9) |
|
Using the Resource Manager to Dynamically Load Localized Resources |
|
|
365 | (3) |
|
Creating and Deploying Localized Resources with Satellite and Resource-Only Assemblies |
|
|
368 | (3) |
|
Building Accessibility Features into Your Applications |
|
|
371 | (5) |
|
Design Guidelines for Building Accessible Applications |
|
|
371 | (1) |
|
Developing Accessible Applications |
|
|
372 | (4) |
|
Implementing Online User Assistance |
|
|
376 | (6) |
|
|
382 | (1) |
|
|
383 | (1) |
|
|
384 | (1) |
|
|
385 | (5) |
|
Answers to Review Questions |
|
|
390 | (1) |
|
Configuring and Securing Windows Applications |
|
|
391 | (64) |
|
Configuring Windows Applications |
|
|
392 | (15) |
|
The Application Configuration File |
|
|
392 | (13) |
|
The machine.config Configuration File |
|
|
405 | (2) |
|
Securing Windows Applications Using the .NET Framework |
|
|
407 | (37) |
|
Using Security Tools in the .NET Framework |
|
|
407 | (3) |
|
Authentication in Windows Applications |
|
|
410 | (4) |
|
Authorization in Windows Applications |
|
|
414 | (9) |
|
Setting an Assembly's Security Level |
|
|
423 | (3) |
|
Permissions and Permission Sets |
|
|
426 | (7) |
|
|
433 | (5) |
|
Configuring Security for a Windows Application Launched from Internet Explorer (URL Remoting) |
|
|
438 | (6) |
|
|
444 | (1) |
|
|
445 | (1) |
|
|
446 | (1) |
|
|
447 | (5) |
|
Answers to Review Questions |
|
|
452 | (3) |
|
Testing, Debugging, and Optimizing Windows Applications |
|
|
455 | (46) |
|
|
456 | (4) |
|
|
457 | (2) |
|
Creating a Unit Test Plan |
|
|
459 | (1) |
|
|
460 | (16) |
|
Configuring Visual Studio .NET Debugging |
|
|
461 | (2) |
|
|
463 | (7) |
|
|
470 | (6) |
|
|
476 | (11) |
|
Implementing Custom Trace Listeners |
|
|
480 | (2) |
|
Implementing Trace Switches |
|
|
482 | (5) |
|
|
487 | (4) |
|
Avoiding Late Binding and Implicit Conversions |
|
|
487 | (1) |
|
Using the Narrowest Scope Required |
|
|
488 | (1) |
|
|
489 | (1) |
|
Implementing Compiler Optimizations |
|
|
490 | (1) |
|
|
491 | (1) |
|
|
491 | (1) |
|
|
492 | (1) |
|
|
493 | (6) |
|
Answers to Review Questions |
|
|
499 | (2) |
|
Deploying Windows Applications |
|
|
501 | (46) |
|
|
502 | (13) |
|
Working with Private Assemblies |
|
|
502 | (5) |
|
Working with Strong-Named Assemblies |
|
|
507 | (3) |
|
Adding Assemblies to the Global Assembly Cache |
|
|
510 | (4) |
|
Performing a Compile-Time Install of an Application |
|
|
514 | (1) |
|
Packaging a Windows Application with Windows Installer |
|
|
515 | (17) |
|
Choosing a Deployment Strategy |
|
|
532 | (6) |
|
Performing an XCOPY Deployment |
|
|
532 | (1) |
|
Deploying from a Network Share |
|
|
533 | (1) |
|
Web-Based Deployment of an Application |
|
|
534 | (2) |
|
Deploying from Removable Media |
|
|
536 | (2) |
|
|
538 | (1) |
|
|
538 | (1) |
|
|
539 | (1) |
|
|
540 | (4) |
|
Answers to Review Questions |
|
|
544 | (3) |
|
Part III Developing Web Applications with Visual Basic .NET |
|
|
547 | (274) |
|
|
549 | (52) |
|
Introduction to Web Forms |
|
|
550 | (8) |
|
|
550 | (3) |
|
Separating UI from Business Logic |
|
|
553 | (1) |
|
Adding and Setting Directives on ASP.NET Pages |
|
|
554 | (4) |
|
|
558 | (18) |
|
|
559 | (3) |
|
|
562 | (5) |
|
|
567 | (4) |
|
|
571 | (2) |
|
|
573 | (3) |
|
Working with the Stateless Web |
|
|
576 | (7) |
|
Maintaining State in ASP.NET |
|
|
576 | (5) |
|
Implementing State in Various Topologies |
|
|
581 | (2) |
|
ASP.NET Events and Event Error Handling |
|
|
583 | (8) |
|
Handling Events with Global.asax |
|
|
583 | (3) |
|
Handling Errors on a Page |
|
|
586 | (2) |
|
Handling Application Errors |
|
|
588 | (3) |
|
|
591 | (1) |
|
|
591 | (1) |
|
|
592 | (1) |
|
|
593 | (5) |
|
Answers to Review Questions |
|
|
598 | (3) |
|
|
601 | (66) |
|
Developing with Server Controls |
|
|
602 | (21) |
|
Implementing HTML Server Controls |
|
|
602 | (10) |
|
Implementing Web Server Controls |
|
|
612 | (6) |
|
Dynamically Loading Controls |
|
|
618 | (5) |
|
ASP.NET Validation Controls |
|
|
623 | (24) |
|
The RequiredFieldValidator Control; |
|
|
625 | (1) |
|
The CompareValidator Control |
|
|
625 | (1) |
|
The RangeValidator Control |
|
|
626 | (1) |
|
The RegularExpressionValidator Control |
|
|
626 | (1) |
|
The CustomValidator Control |
|
|
627 | (1) |
|
The ValidationSummary Control |
|
|
628 | (6) |
|
Configuring Control Templates |
|
|
634 | (13) |
|
Developing Custom Web User Controls |
|
|
647 | (9) |
|
Creating Web User Controls |
|
|
647 | (5) |
|
Adding User Controls to ASP.NET Pages |
|
|
652 | (4) |
|
|
656 | (1) |
|
|
656 | (1) |
|
|
657 | (1) |
|
|
658 | (7) |
|
Answers to Review Questions |
|
|
665 | (2) |
|
Configuring and Securing Web Applications |
|
|
667 | (48) |
|
Configuring Web Applications |
|
|
668 | (19) |
|
Modifying the Web Application Configuration File |
|
|
668 | (6) |
|
The machine.config Configuration File |
|
|
674 | (1) |
|
Solving Globalization Issues in a Web Application |
|
|
675 | (12) |
|
Securing Web Applications Using the .NET Framework |
|
|
687 | (13) |
|
|
687 | (6) |
|
|
693 | (6) |
|
Implementing Impersonation in Web Applications |
|
|
699 | (1) |
|
Installing and Configuring Internet Information Services |
|
|
700 | (4) |
|
Using FrontPage Server Extensions |
|
|
704 | (2) |
|
|
706 | (1) |
|
|
706 | (1) |
|
|
707 | (1) |
|
|
708 | (5) |
|
Answers to Review Questions |
|
|
713 | (2) |
|
Testing, Debugging, and Optimizing Web Applications |
|
|
715 | (64) |
|
|
716 | (4) |
|
|
717 | (2) |
|
Creating a Unit Test Plan |
|
|
719 | (1) |
|
|
720 | (14) |
|
Configuring Visual Studio .NET Debugging |
|
|
721 | (3) |
|
|
724 | (5) |
|
|
729 | (5) |
|
|
734 | (23) |
|
Implementing Custom Trace Listeners |
|
|
749 | (4) |
|
|
753 | (4) |
|
|
757 | (11) |
|
Implementing the Cache Object |
|
|
757 | (10) |
|
Other Performance Guidelines |
|
|
767 | (1) |
|
|
768 | (1) |
|
|
768 | (1) |
|
|
769 | (1) |
|
|
770 | (6) |
|
Answers to Review Questions |
|
|
776 | (3) |
|
Deploying Web Applications |
|
|
779 | (42) |
|
|
780 | (10) |
|
Working with Private Assemblies |
|
|
780 | (5) |
|
Working with Strong-Named Assemblies |
|
|
785 | (2) |
|
Adding Assemblies to the Global Assembly Cache |
|
|
787 | (3) |
|
Packaging an Application with Windows Installer |
|
|
790 | (15) |
|
Choosing a Deployment Strategy |
|
|
805 | (7) |
|
Performing an XCOPY Deployment |
|
|
805 | (2) |
|
Deploying a Web Application |
|
|
807 | (1) |
|
Deploying from Removable Media |
|
|
808 | (2) |
|
Deploying Applications to Web Gardens, Web Farms, and Clusters |
|
|
810 | (2) |
|
|
812 | (1) |
|
|
813 | (1) |
|
|
814 | (1) |
|
|
815 | (4) |
|
Answers to Review Questions |
|
|
819 | (2) |
Index |
|
821 | |