!= operator, implementing, 39-40
+ operator, implementing, 39
== operator, implementing, 39-40
3D geometry, WPF, rendering, 389-392
3D surfaces
controls, Silverlight, 452-453
WPF
interactive controls, 395-398
video, 392-394
32-bit environments, applications, running in, 591-592
64-bit environments, applications, running in, 591-592
abstract base classes
instantiation, preventing, 23-24
interfaces, compared, 24-25
access, arrays, accessing, 486-487
“access denied” errors, 190
accessibility modifiers, 8
Add Service Reference dialog box, 226
adding constructors, 11-12
administration privileges, requesting, UAC (User Access Control), 578-581
advanced text searches, regular expressions, 132
AJAX (Asynchronous JavaScript and XML), 423
pages, creating, 423-425
AJAX Demo—Default.aspx listing (19.11), 423-424
AJAX Demo—Default.aspx.cs listing (19.12), 424
aliases, namespaces, 51-52
allocating unchanged memory, 488-489
AllWidgetsView.xaml listing (25.1), 557-558
angle brackets, generics, 141
animating WPF element properties, 388-389
anonymous methods
delegates, assigning to, 288
event handlers, using as, 288-290
lambda expression syntax, 290
anonymous objects, LINQ, 466
anonymous types, creating, 22-23
anti-aliasing, 348-349
App.xaml.cs listing (27.8), 612-614
appending newline characters, strings, 120
application configuration values, Windows Forms, 314-316
application data, saving with restricted permissions, 198-200
application state, maintaining, ASP.NET, 429-430
ApplicationData folder, 194
applications
32-bit environments, running in, 591-592
64-bit environments, running in, 591-592
asynchronous programming model, 515-516
command functionality, defining, 547-548, 551
command interface, defining, 545-546
custom attributes, adding, 521-522
deploying, ClickOnce, 572-573
events, writing to event logs, 581-583
history buffer, defining, 545-546
localization, 562-563
ASP.NET application, 564-565
Silverlight application, 570-572
Windows Forms application, 563-564
WPF application, 565-569
memory usage, measuring, 474-475
multiple database servers, working with, 242, 245
nonrectangular windows, creating, 598-601
notification icons, creating, 602-605
OS view, obtaining, 474-475
patterns, 530
Model-View-ViewModel pattern, 552-562
observer pattern, 536-539
plug-in architecture, implementing, 525-528
power state information, retrieving, 595
RSS content, parsing, 216, 219
screen locations, remembering, 543-544
screen savers, creating, 605-614
single instance, limiting, 505-506
sound files, playing, 619-620
splash screens, displaying, 614-619
starting, elevated privileges, 578-581
system configuration changes, responding to, 593
TextTokenizer, 515-516
undo commands, implementing, 545-552
web browsers
embedding, 214-216
running out of, 453-454
Windows services
creating, 585-588
managing, 584
WinForms applications, WPF, 398-400
architectures, plug-in architectures, implementing, 525-528
arrays
access, speeding up, 486-487
declaring, 50
jagged arrays, 51
multidimensional arrays, creating, 50-51
objects, creating, 140
rectangular arrays, creating, 50-51
strings, splitting into, 121-122
values, reversing, 166-167
AsOrdered( ) method, 472
ASP.NET
AJAX pages, creating, 423-425
application state, maintaining, 429-430
controls, binding data to, 256-257
data validation, 425-429
debugging information, viewing, 402-403
GridView, data binding, 412-414
master pages, 409-411
MVC (Model-View-Controller), 436-441
application creation, 436
controller creation, 437
model creation, 436
new records creation, 438-440
Views creation, 437-438
session state
restoring, 434-436
storing, 433-434
trace information, viewing, 402-403
UI state, maintaining, 430
UIs, creating, 418-422
user controls, creating, 414-417
user data, maintaining, 431-433
user logins, authentication, 406-409
users, redirecting to another page, 405-406
web browser capabilities, determining, 404
web sites, adding menus, 411-412
ASP.NET applications
localization, 564-565
unhandled exceptions, catching, 75
AsParallel( ) method, 472
assemblies
plug-in assemblies, creating, 525-526
shared assemblies, creating, 525
types, enumerating, 520-521
Asynchronous Javascript and XML (AJAX). See AJAX (Asynchronous JavaScript and XML)
asynchronous programming model, 515-516
Asynchronous Web Downloader listing (12.3), 211-213
asynchronously calling methods, 496-497
asynchronously downloading web content, 210-213
auto-implemented properties, 10
availability, database connections, 258
banker’s rounding, 93
base class constructors, calling, 15
base classes, 24
abstract base classes
instantiation prevention, 23-24
interfaces, 24-25
constraining, 147
methods, overriding, 16-17
non-virtual methods, overriding, 17-19
non-virtual properties, overriding, 17-19
properties, overriding, 16-17
Base-64 encoding, 122-124
BaseForm.cs listing (16.1), 304-306
bases, numbers, converting, 87-89
BigInteger class, 79-80
binary data, strings, converting to, 122-124
binary files, creating, 179
binding data, controls, 250-257
Bing.cs listing (21.1), 469-470
bitmaps, pixels, accessing directly, 347-348
bits, memory, locking, 348
BookDetail.aspx listing (19.9), 417
BookDetail.aspx.cs listing (19.10), 417-418
BookEntrycontrol.ascx listing (19.7), 414-415
BookEntryControl.ascx.cs listing (19.8), 415-417
BookList.aspx listing (19.6), 412-413
BooksApp—MasterPage.master, 410
BookTransform.xslt listing (14.1), 274-275
bound data, WPF, displaying, 385-386
browser capabilities, determining, 404
browsers, applications, running out of, 453-454
brushes, creating, 339-341
buffers, off-screen buffers, drawing to, 346-347
bytes
numbers, converting to, 89-90
strings
converting to, 110-111
C functions, calling, C#, 589-590
caches, garbage collection, creating, 482-485
calling
C functions, C#, 589-590
functions, timers, 313-314
methods, asynchronously, 496-497
multiple methods, delegates, 281-282
native Windows functions, P/Invoke, 588-589
captures, multiscreen captures, taking, 352-354
capturing webcams, Silverlight, 455-457
case, localized strings, changing, 116
catching
exceptions, 64
multiple exceptions, 65
unhandled exceptions, 72-75
circles, points, determining, 355-356
classes. See also types
base class constructors, calling, 15
base classes, 24
constraining, 147
overriding methods, 16-17
overriding properties, 16-17
BigInteger, 79-80
changes, notifications, 38
collection classes, picking correctly, 156-157
CommonOpenFileDialog, 594
deriving from, 14-15
dynamically instantiated classes, invoking methods on, 523-524
exception classes, creating, 70-72
formatting
ICustomFormatter, 31-32
StringBuilder, 31-32
ToString( ) method, 28-31
generic classes, creating, 143
hashable classes, creating, 34
inheritance, preventing, 41-42
instantiating, 523
interface classes, constraining, 147
Math, 94-95
metadata, attaching, 521-522
MFC (Microsoft Foundation Classes), 296
OpenFileDialog, 594
Parallel, 492-495
proxy classes, 225-226
String, 121
System.Numerics.Complex, 80
Vertex3d, 9
XmlDocument, 268
XmlTextReader, 269
ClickOnce, applications, deploying, 572-573
clients
changes, notifications, 38
dynamic clients, implementing, 235-236
TCP/IP clients, creating, 204-208
Clipboard, Windows Forms, 323-327
Clipboard.SetText( ) method, 323
closing files, 179
clutures (.NET), 562-563
code
obsolete code, marking, 531
profiling, stopwatch, 530-531
reflection, 520
instantiation, 523
reuse, multiple constructors, 14
code contracts, enforcing, 58-60
code listings
7.2 (Reverse Words in a String), 124-125
7.3 (Natural Sorting), 126-130
10.1 (PriorityQueue.cs), 169-173
11.1 (CompressFile.cs), 181-183
11.2 (Searching for a File or Directory), 188-190
14.1 (BookTransform.xslt), 274-275
16.2 (InheritedForm.cs), 306-308
18.1 (ImageInfoViewModel.cs), 379-380
18.2 (Window1.xaml.cs), 381-383
19.2 (LoginForm.aspx.cs), 407-408
19.7 (BookEntrycontrol.ascx), 414-415
19.8 (BookEntryControl.ascx.cs), 415-417
19.10 (BookDetail.aspx.cs), 417-418
19.11 (AJAX Demo—Default.aspx), 423-424
19.12 (AJAX Demo—Default.aspx.cs), 424
19.13 (Validation Demo—Default.aspx), 425-427
19.14 (Validation Demo—Default.aspx.cs), 427-428
19.15 (Session State Demo—Default.aspx), 431-432
19.16 (Session State Demo—Default.aspx.cs), 432-433
20.2 (MainPage.xaml.cs), 446-448
20.3 (PlayDownloadProgressControl.xaml), 449
20.4 (PlayDownloadProgressControl.xaml.cs), 449-450
20.6 (MainPage.xaml.cs), 456-457
25.1 (AllWidgetsView.xaml), 557-558
25.2 (WidgetGraphicView.xaml), 558
25.3 (Mainwindow.xaml), 561-562
27.3 (OptionsWindow.xaml), 606
27.4 (OptionsWindow.xaml.cs), 606-607
27.5 (ScreenSaverWindow.xaml), 607
27.6 (ScreenSaverWindow.xaml.cs), 607-611
27.9 (SplashScreen.xaml), 616-619
collapsing controls, WPF, 375-376
collection classes, picking correctly, 156-157
collection items, concatenating, strings, 119-120
collections
arrays, reversing, 166-167
concurrency-aware collections, 157
custom collections, creating, 159-163
custom iterators, creating, 163-166
data binding, WPF, 385
elements
counting, 168
obtaining, 168
shuffling, 620
filtering, LINQ, 464
generic collections, 156
initializing, 157-158
interfaces, 159
linked lists, reversing, 167
priority queues, implementing, 169
querying, LINQ, 462-463
trie structure, creating, 173-176
color definitions, graphics, 330
color picker, Windows Forms, 330-331
colors, converting, 331-335
COM interop, dynamic typing, simplifying, 49
Combining streams, 181-183
command functionality, defining, 547-548, 551
command interface, defining, 545-546
command objects, undo commands, implementing, 545-552
commands (WPF)
custom commands, 371-373
enabling/disabling, 374
standard commands, 370-371
CommonOpenFileDialog class, 594
complex numbers, formatting, 80-82
ComplexCriteria( ) method, 472
CompressFile.cs listing (11.1), 181-183
compression, files, 181-183
concatenating
collection items into strings, 119-120
StringBuilder, 117-119
concurrency-aware collections, 157
conditional operator, 52-53
configuration, Windows Forms, 314-316
connections, databases, 240-242, 245
availability, 258
console programs, unhandled exceptions, catching, 73
const fields, 13
constants, enumeration constants, duplicate values, 101
constraining, generic types, 146-149
constraints, methods, adding, 58-60
construction, properties, initialization, 12
constructors
adding, 11-12
base class constructors, calling, 15
multiple constructors, code reuse, 14
Contracts class, methods, constraints, 58-60
Contravariance, delegates, 291
controls
3D surfaces, Silverlight, 452-453
data, binding to, 250-257
DataGridView, 250-254
interactive controls, 3D surfaces, 395-398
ToolStrip, 297
user controls
creating, 414-417
Windows Forms, 308-313
windows, positioning, 367
WPF
appearance/functionality, 377
binding properties, 379-383
designing, 386-387
expanding/collapsing, 375-376
conversion operators, implementing, 40-41
Convert.ToBase64String ( ), 122
converting
binary data to strings, 122-124
bytes to strings, 110-111
numbers
bytes, 89-90
number bases, 87-89
strings
flags, 104
to bytes, 110-111
to enumerations, 103-104
to numbers, 86-87
types, 40-41
cookies, session state, restoring, 434-436
counting 1 bits, 92
CPUs, information, obtaining, 576-578
cryptographically secure random numbers, 97
cultures, numbers, formatting for, 82-83
current operating system, version information, obtaining, 576
cursors
mouse cursor, distance, 354-355
wait cursors, resetting, 327-328
custom attributes, applications, adding, 521-522
custom collections, creating, 159-160, 163
custom commands, WPF, 371-373
custom encoding schemes, strings, 111, 114-115
custom formatting, ToString( ) method, 29
custom iterators, collections, creating, 163-166
Custom web browser listing (12.4), 215-216
cut and paste operations, Windows Forms, 323-327
data
exchanging, threads, 499-500
multiple threads, protecting, 500-502
protecting, multiple processes, 504-505
storing application-wide, 429-430
data binding
GridView control, 412-414
WPF
collections, 385
value conversions, 383-385
value formatting, 383
data structures, multiple threads, 495
data types, forms, cutting and pasting, 323
database tables
data
deleting, 246-247
inserting, 245-246
stored procedures, running, 247-248
databases
connections, availability, 258
controls, binding data to, 250-257
creating, Visual Studio, 238-239
data, transforming to, 273-276
multiple tables, joins, 465-466
MySQL databases, connecting to, 241-242
objects, mapping data to, 259-260
tables
deleting data, 246-247
displaying data, 250-257
inserting data, 245-246
transactions, 248-250
updating, DataSet, 252-254
DataGridView control, 250-254
DataSet
controls, binding data to, 250-257
databases, updating, 252-254
dates, validating, 136
dead code, marking, 531
debugging information, viewing, ASP.NET, 402-403
Decimal floating point types, 78
declaring
delegates, 280
enumerations, 100-102
flags as enumerations, 101-102
objects, 50
variables, 46-47
default constructors, types, constraining to, 148
default parameters, methods, calling, 55-56
Default.aspx listing (19.3), 409
Default.aspx listing (19.5), 411
deferring
evaluations, values, 57-58
type checking, runtime, 47-49
defining
fields, 9-10
methods, 9-10
properties, 9-10
static members, 10-11
degrees, radians, converting to, 93
delegates
anonymous methods, assigning to, 288
contravariance, 291
declaring, 280
generic delegates, 145-146
multiple methods, calling to, 281-282
deleting files, 180
deploying applications, ClickOnce, 572-573
diagonally drawing text, 344
dialog boxes
Add Service Reference, 226
New Silverlight Application, 445
directories
browsing for, 187
enumerating, 186-187
existence, confirming, 185
searching for, 188-190
directory names, filenames, combining, 190-191
disabling commands, WPF, 374
discoverable hosts, implementing, 233-234
displaying splash screens, 614
Windows Forms, 614-616
WPF, 616-619
Dispose pattern, finalization, 479-482
dispose pattern, managed resources, cleaning up, 477-482
Dispose pattern, Windows Communication Framework, 479
DLLs (dynamic link libraries), C functions, calling, 589-590
DLR (Dynamic Language Runtime), 49
documents
printing, Silverlight, 457
XML documents, validating, 270-271
Double floating point types, 78
download progress bars, video, Silverlight, 449-450
downloading, web content, HTTP, 209-213
drawing shapes, 335-337
drives, enumerating, 185-186
dynamic clients, implementing, 235-236
dynamic keyword, 47-49
Dynamic Language Runtime (DLR), 49
dynamic typing, COM interop, simplifying, 49
dynamically disabling, menu items, Windows Forms, 300
dynamically instantiated classes, methods, invoking on, 523-524
dynamically producing, RSS feeds, IIS (Internet Information Services), 220-222
dynamically sized array of objects, creating, 140
element properties, WPF, animating, 388-389
elements, collections
counting, 168
obtaining, 168
shuffling, 620
ellipse, points, determining, 356-357
email, SMTP (Simple Mail Transport Protocol), sending via, 208-209
email addresses, matching, 136
embedding, web browsers, applications, 214-216
empty strings, detecting, 117
enabling commands, WPF, 374
EncodeBase64Bad listing (7.1), 123
encoding schemes, strings, 111, 114-115
Encoding.GetString( ) method, 110
enforcing code contracts, 58-60
Entity Framework
database objects, mapping data to, 259-260
entities
creating, 260
deleting, 260
listing, 259
looking up, 260
querying, LINQ, 467-469
Enum values, metadata, attaching to, 104-106
Enum.GetValues( ) method, 103
enumerating
directories, 186-187
drives, 185-186
files, 186-187
declaring, 100-102
external values, matching, 106
flags, 107
declaring as, 101-102
integers, converting to, 102
naming, 107
None values, defining, 107
strings, converting to, 103-104
validity, determining, 103
values, listing, 103
equality, types, determining, 32-33
Equals( ) method, objects, equality, 32-33
evaluation, values, deferring, 57-58
event brokers, 540-543
event handlers, anonymous methods, using as, 288-290
event logs
events, writing to, 581-583
reading from, 582
events
event brokers, 540-543
event logs, writing to, 581-583
metadata, attaching, 521-522
multiple events, combining into one, 532-536
publishing, 283
subscribing to, 282-283
WPF, responding to, 376-377
exceptions
catching, 64
multiple exceptions, 65
unhandled exceptions, 72-75
classes, creating, 70-72
handling, 76
information, extracting, 68-70
intercepting, 67
rethrowing, 66-67
throwing, 64
exchanging data, threads, 499-500
existingType.MyNewMethod( ) method, types, adding methods to, 54-55
Exists( ) method, 185
expanding controls, WPF, 375-376
explicit conversions, types, 40-41
explicit values, enumerations, declaring, 100
expressions, regular expressions, 132
advanced text searches, 132
extracting groups of text, 132-133
improving, 137
replacing text, 133-134
validating user input, 134-136
eXtensible Markup Language (XML). See XML (eXtensible Markup Language)
extension methods, metadata, attaching to Enum values, 104-106
fields
const, 13
defining, 9-10
metadata, attaching, 521-522
read only, 13
file dialogs, 594
filenames
directory names, combining, 190-191
temporary filenames, creating, 192
files
accessing, 590-591
closing, 179
compressing, 181-183
deleting, 180
enumerating, 186-187
existence, confirming, 185
FTP sites, uploading to, 213-214
memory-mapped files, 590-591
paths, manipulating, 190-191
searching for, 188-190
security information, retrieving, 183-184
sizes, retrieving, 183
text files, creating, 178-179
XML files
reading, 268-270
validating, 270-271
filtering object collections, LINQ, 464
finalization
Dispose pattern, 479-482
unmanaged resources, cleaning up, 475-477
flags
enumerations, 107
declaring, 101-102
strings, converting to, 104
floating-point types, choosing, 78
folders
paths, retrieving, 194
users, allowing access, 187
forcing garbage collection, 482
format strings, 84-85
formatting
complex numbers, 80-82
numbers, strings, 82-85
types
ICustomFormatter, 31-32
StringBuilder, 31-32
ToString( ) method, 28-31
forms
configuration, 314-316
data types, cutting and pasting, 323
horizontal tilt wheel, 319-323
images, cutting and pasting, 323
inheritance, 304-308
menu bars, adding, 297-299
menu items, dynamically disabling, 300
modal forms, creating, 296
modeless forms, creating, 296
split window interfaces, creating, 302-303
status bars, adding, 300
text, cutting and pasting, 323
timers, 313-314
toolbars, adding, 301-302
user controls, creating, 308-313
user login, authentication, 406-409
user-defined objects, cutting and pasting, 325-327
wait cursors, resetting, 327-328
FTP sites, files, uploading to, 213-214
functions, calling, timers, 313-314
FXCop, 626-627
garbage collection
caches, creating, 482-485
forcing, 482
GDI (Graphics Device Interface), 330
GDI+, 330
anti-aliasing, 348-349
bitmap pixels, accessing directly, 347-348
brushes, creating, 339-341
color picker, 330-331
colors, converting, 331-335
flicker-free drawing, 349-350
graphics
color definitions, 330
resizing, 350-351
thumbnails, 351-352
images, drawing, 344-345
mouse cursor, distance, 354-355
multiscreen captures, taking, 352-354
off-screen buffers, drawing to, 346-347
pens, creating, 337-339
points
circles, 355-356
ellipse, 356-357
mouse cursor, 354-355
rectangles, 355
rectangles, intersection, 357
shapes, drawing, 335-337
text, drawing, 344
transformations, 341
rotation, 342
scaling, 343
shearing, 343
translations, 342
transparent images, drawing, 345
generating
GUIDs (globally unique IDs), 97-98
random numbers, 96-97
generic classes, creating, 143
generic collections, 156
methods, passing to, 149-150
generics, 140
constraining, 146-149
generic classes, creating, 143
generic collections, 156
passing to methods, 149-150
generic delegates, creating, 145-146
generic interfaces, creating, 142
generic list, creating, 140
generic methods, creating, 141-142
generic types, constraining, 146-149
multiple generic types, creating, 146
GetBytes( ) method, 110
GetHashCode( ) method, hashable types, creating, 34
GetPixel( ) method, 347
GetTempFileName( ) method, 192
GetTotalMemory( ) method, 474
color definitions, 330
resizing, 350-351
text, drawing, 344
thumbnails, creating, 351-352
transformations, 341
rotation, 342
scaling, 343
shearing, 343
translations, 342
Graphics Device Interface (GDI), 330
GridView control, data, binding to, 412-414
group digits, 84
groups of text, extracting, regular expressions, 132-133
GUIDs (globally unique IDs), generating, 97-98
handling exceptions, 76
Hanselman, Scott, 631
hard drives, enumerating, 185-186
hardware information, obtaining, 576-578
HasFlag( ) method, 102
hash codes, 34
hashable types, creating, GetHashCode( ) method, 34
hexadecimal numbers, printing in, 83
history buffer, defining, 545-546
horizontal tilt wheel, Windows Forms, 319-323
hostnames, current machines, obtaining, 202
hosts
availability, detecting, 203
discoverable hosts, implementing, 233-234
HSV color format, RGB color format, converting between, 331-335
HTML tags, stripping, 214
HTTP, web content, downloading via, 209-213
IComparer, coverting, 150-151
icons, notification icons, creating, 602-605
ICustomFormatter, types, formatting, 31-32
IEnumerable, 50
converting, 149
IIS (Internet Information Services), RSS feeds, producing dynamically, 220-222
ImageInfoViewModel.cs listing (18.1), 379-380
images. See also graphics
drawing, 344-345
forms, cutting and pasting, 323
resizing, 350-351
thumbnails, creating, 351-352
transparent images, drawing, 345
implicit conversions, types, 41
implicit typing, 46-47
indexes, types, 36-37
inference, types, 46-47
information, exceptions, extracting, 68-70
inheritance, forms, 304-308
inheritances, classes, preventing, 41-42
InheritedForm.cs listing (16.2), 306-308
initialization
collections, 157-158
properties at construction, 12
static data, 12
INotifyPropertyChanged interface, 38
installation, NUnit, 625
instantiation, abstract base classes, preventing, 23-24
integers
determining, 79, 82, 91-93, 96-97
enumerations, converting to, 102
large integers, UInt64, 79-80
interactive controls, 3D surfaces, WPF, 395-398
intercepting exceptions, 67
interface classes, constraining, 147
interfaces, 24
abstract base classes, compared, 24-25
collections, 159
contracts, implementing on, 60
creating, 19
generic interfaces, creating, 142
implementing, 19-21
split window interfaces, creating, 302-303
interlocked methods, locks, compared, 503
Internal accessibility modifier, 8
Internet, communication over, WCF, 231-232
IntersectsWith( ) method, 357
IP addresses
current machines, obtaining, 202
hostnames, translating to, 202
ISerializable ( ) interface, 196
IsPrime( ) method, 92
iterators, collections, creating for, 163-166
jagged arrays, 51
joins, multiple tables, LINQ, 465-466
keywords
dynamic, 47-49
object, 49
labels, type parameters, 146
lambda expression syntax, anonymous methods, 290
Language Integrated Query (LINQ). See LINQ (Language Integrated Query)
layout method, WPF, choosing, 367
leading zeros, printing, 84
libraries, Windows 7, accessing, 594
limiting applications, single instance, 505-506
linked lists, reversing, 167
LINQ (Language Integrated Query), 462
anonymous objects, 466
Bing, 469-471
Entity Framework, querying, 467-469
multiple tables, joins, 465-466
object collections
filtering, 464
obtaining portions, 465
querying, 462-463
PLINQ (Parallel LINQ), 472
query results, ordering, 463
SQL, compared, 462
web services, querying, 469-471
XML, generating, 467
XML documents, querying, 466-467
LINQPad, 630-631
listing values, enumerations, 103
listings
7.2 (Reverse Words in a String), 124-125
7.3 (Natural Sorting), 126-130
10.1 (PriorityQueue.cs), 169-173
11.1 (CompressFile.cs), 181-183
11.2 (Searching for a File or Directory), 188-190
14.1 (BookTransform.xslt), 274-275
16.2 (InheritedForm.cs), 306-308
18.1 (ImageInfoViewModel.cs), 379-380
18.2 (Window1.xaml.cs), 381-383
19.2 (LoginForm.aspx.cs), 407-408
19.7 (BookEntryControl.ascx), 414-415
19.8 (BookEntryControl.ascx.cs), 415-417
19.10 (BookDetail.aspx.cs), 417-418
19.11 (AJAX Demo—Default.aspx), 423-424
19.12 (AJAX Demo—Default.aspx.cs), 424
19.13 (Validation Demo—Default.aspx), 425-427
19.14 (Validation Demo—Default.aspx.cs), 427-428
19.15 (Session State Demo—Default.aspx), 431-432
19.16 (Session State Demo—Default.aspx.cs), 432-433
20.2 (MainPage.xaml.cs), 446-448
20.3 (PlayDownloadProgressControl.xaml), 449
20.4 (PlayDownloadProgressControl.xaml.cs), 449-450
20.6 (MainPage.xaml.cs), 456-457
25.1 (AllWidgetsView.xaml), 557-558
25.2 (WidgetGraphicView.xaml), 558
25.3 (Mainwindow.xaml), 561-562
27.3 (OptionsWindow.xaml), 606
27.4 (OptionsWindow.xaml.cs), 606-607
27.5 (ScreenSaverWindow.xaml), 607
27.6 (ScreenSaverWindow.xaml.cs), 607-611
27.9 (SplashScreen.xaml), 616-619
ListView (Wondows Forms), virtual mode, 317-318
loading plugins, 526-528
LocalApplicationData folder, 194
localization, 562-563
ASP.NET application, 564-565
resource files, 568-569
Silverlight application, 570-572
Windows Forms application, 563-564
WPF application, 565-569
XAML localization, 566-568
localized strings
case, changing, 116
comparing, 115-116
locking bits, memory, 348
locks, 502
interlocked methods, compared, 503
multiple threads, 502
reader-writer locks, 513-514
LoginForm.aspx listing (19.1), 407
LoginForm.aspx.cs listing (19.2), 407-408
MailMessage class, 209
MainPage.xaml listing (20.1), 445-448
MainPage.xaml listing (20.5), 455
MainPage.xaml.cs listing (20.2), 446-448
MainPage.xaml.cs listing (20.6), 456-457
Mainwindow.xaml listing (25.3), 561-562
managed resources, cleaning up, dispose pattern, 477-482
mapping data, database objects, 259-260
marking obsolete code, 531
master pages, ASP.NET, 409-411
Math class, numbers, rounding, 94-95
measuring memory usage, 474-475
memory
bits, locking, 348
fixed memory, 488
objects, directly accessing, 485-486
preventing being moved, 487-488
unchanged memory, allocating, 488-489
memory streams, serializing, 198
memory usage, measuring, 474-475
memory-mapped files, 590-591
menu bars
windows, adding to, 367-368
Windows Forms, adding, 297-299
menu items, Windows Forms, disabling dynamically, 300
menus, websites, adding, 411-412
metadata
Enum values, attaching to, 104-106
method arguments, attaching, 521-522
method arguments, metadata, attaching, 521-522
methods
anonymous methods
as event handlers, 288-290
assigning to delegates, 288
lambda expression syntax, 290
AsOrdered( ), 472
AsParallel( ), 472
calling
default parameters, 55-56
named parameters, 56
specific intevals, 512
calling asynchronously, 496-497
Clipboard.SetText( ), 323
ComplexCriteria( ), 472
constraints, adding to, 58-60
defining, 9-10
delegates, calling multiple to, 281-282
dynamically instantiated classes, invoking on, 523-524
Encoding.GetString( ), 110
Enum.GetValues( ), 103
Equals( ), 32-33
existingType.MyNewMethod( ), 54-55
Exists( ), 185
extension methods, 104-106
generic collections, passing to, 149-150
generic methods, creating, 141-142
GetBytes( ), 110
GetHashCode( ), 34
GetPixel( ), 347
GetTempFileName( ), 192
GetTotalMemory( ), 474
HasFlag( ), 102
IntersectsWith( ), 357
IsPrime( ), 92
metadata, attaching, 521-522
Monitor.Enter( ), 501
Monitor.Exit( ), 501
non-virtual methods, overriding, 17-19
Object.Equals( ), 32
OrderBy( ), 472
overriding, base classes, 16-17
Parse( ), 97
ParseExact( ), 97
runtime, choosing, 280-282
SetPixel( ), 347
String.Concat( ), 119
String.IsNullOrEmpty( ), 117
String.IsNullOrWhitespace( ), 117
ToString( ), 28-31, 79, 82, 104, 385
TryParse( ), 97
TryParseExact( ), 97
types, adding to, 54-55
MFC (Microsoft Foundation Classes), 296
modal forms, creating, 296
Model-View-ViewModel pattern, WPF, 552-562
defining model, 553-554
defining view, 557-558
defining ViewModel, 555-556
modeless forms, creating, 296
modifiers, accessibility modifiers, 8
Monitor.Enter( ) method, 501
Monitor.Exit( ) method, 501
monitoring system changes, 192-194
mouse cursor, distance, 354-355
multidimensional arrays, creating, 50-51
multiple constructors, code reuse, 14
multiple events, single event, combining into, 532-536
multiple exceptions, catching, 65
multiple generic types, creating, 146
multiple interfaces, implementing, 20-21
multiple processes, data, protecting, 504-505
multiple tables, joins, LINQ, 465-466
multiple threads
data, protecting, 500-502
data structures, 495
locks, 502
multiples, numbers, rounding to, 94-95
multiscreen captures, taking, 352-354
multithreaded timers, 512
mutexes, naming, 505
MVC (Model-View-Controller), 436-441
application creation, 436
controller creation, 437
model creation, 436
new records creation, 438-440
records, editing, 439-441
Views creation, 437-438
My Documents, paths, retrieving, 194
MyCDll.cpp listing (26.2), 589
MyCDll.def listing (26.3), 590
MySQL databases, connecting to, 241-242
named parameters, methods, calling, 56
namespaces
aliasing, 51-52
System.Text, 110
naming
enumerations, 107
mutexes, 505
native Windows functions, calling, P/Invoke, 588-589
Natural Sorting listing (7.3), 126-130
naturally sorting, number strings, 125, 128-130
NDepend, 626
.NET
cultures, 562-563
MSDN documentation, 3
objects, storing in binary form, 194-197
printing, 358-363
Win32 API functions, calling, 588-589
network cards, information, obtaining, 204
networks, availability, detecting, 203
New Silverlight Application dialog box, 445
newline characters, strings, appending to, 120
non-virtual methods and properties, overriding, 17-19
None values, enumerations, defining, 107
nonrectangular windows, creating, 598-601
notification icons, creating, 602-605
notifications, changes, 38
null values, checking for, 53
null-coalescing operator, 53
nulls, value types, assigning to, 42
number format strings, 85
number strings, sorting naturally, 125, 128-130
numbers
1 bits, counting, 92
bytes, converting to, 89-90
complex numbers, formatting, 80-82
degrees, converting, 93
converting to integers, 102
declaring, 100-102
external values, 106
flags, 107
naming, 107
None values, 107
strings, 103-104
validity, 103
values, 103
floating-point types, 78
group digits, 84
GUIDs (globally unique IDs), generating, 97-98
hexadecimal, printing in, 83
converting to enumerations, 102
determining, 79, 82, 91-93, 96-97
large integers, 79-80
leading zeros, printing, 84
number bases, converting, 87-89
prime numbers, determining, 92
pseudorandom numbers, 96
radians, converting, 93
random numbers, generating, 96-97
rounding, 94-95
strings
converting, 86-87
formatting in, 82-85
numerical indexes, types, 36
NUnit, 623-625
object collections
filtering, LINQ, 464
querying, LINQ, 462-463
object keyword, 49
Object.Equals( ) method, 32
objects
arrays
declaring, 50
jagged arrays, 51
multidimensional arrays, 50-51
rectangular arrays, 50-51
collections
concurrency-aware collections, 157
counting elements, 168
custom collection creation, 159-160, 163
custom iterator creation, 163-166
initializing, 157-158
interfaces, 159
obtaining elements, 168
picking correctly, 156-157
priority queues, 169
reversing arrays, 166-167
reversing linked lists, 167
trie structure, 173-176
databases, mapping data to, 259-260
converting to integers, 102
declaring, 100-102
external values, 106
flags, 107
naming, 107
None values, 107
strings, 103-104
validity, 103
values, 103
equality, determining, 32-33
memory, directly accessing, 485-486
serializing, 194-197
sortable objects, creating, 34-35
user-defined objects, forms, 325-327
XML, serialization, 262-266
observer pattern, implementing, 536-539
obsolete code, marking, 531
off-screen buffers, drawing to, 346-347
OpenFileDialog class, 594
operating systems, current operating system, version information, 576
operators
!= operator, implementing, 39-40
+ operator, implementing, 39
== operator, implementing, 39-40
conditional operators, 52-53
conversion operators, implementing, 40-41
null-coalescing operator, 53
overloading, 39-40
OptionsWindow.xaml listing (27.3), 606
OptionsWindow.xaml.cs listing (27.4), 606-607
OrderBy( ) method, 472
ordering query results, LINQ, 463
overloading operators, 39-40
overriding
non-virtual methods, base classes, 17-19
non-virtual properties, 17-19
ToString( ) method, 29
P/Invoke, native Windows functions, calling, 588-589
Parallel class
data, processing in, 492-494
tasks, running in, 494-495
parameters
default values, specifying, 55-56
named parameters, called methods, 56
types, labels, 146
Parse ( ), 86
parse hexadecimal number strings, converting, 87
Parse( ) method, 97
ParseExact( ) method, 97
files, manipulating, 190-191
user folders, retrieving, 194
patterns (applications), 530
Model-View-ViewModel pattern, 552-562
defining model, 553-554
defining view, 557-558
defining ViewModel, 555-556
observer pattern, implementing, 536-539
pens, creating, 337-339
phone numbers, validating, 135
pinging machines, 203
playback progress bars, video, Silverlight, 449-450
PlayDownloadProgressControl.xaml listing (20.3), 449
PlayDownloadProgressControl.xaml.cs listing (20.4), 449-450
playing sound files, 619-620
PLINQ (Parallel LINQ), 472
plugin architecture, implementing, 525-528
plugin assemblies, creating, 525-526
plugins, loading and searching for, 526-528
pointers, using, 485-486
points
circles, determining, 355-356
ellipse, determining, 356-357
mouse cursor, distance, 354-355
rectangles, determining, 355
power state information, retrieving, 595
prefix trees, 173-176
prime numbers, determining, 91-92
Print Preview, 363
printing
.NET, 358-363
documents, Silverlight, 457
numbers
hexidecimals, 83
leading zeros, 84
priority queues, collections, implementing, 169
PriorityQueue.cs listing (10.1), 169-173
Private accessibility modifier, 8
Process Explorer, 628-629
Process Monitor, 628-629
processes, communicating between, 222-229
processing data in Parallel class, 492-494
processors, tasks, splitting among, 492-495
profiling code, stopwatch, 530-531
Program.cs listing (21.2), 471
progress bars, video, Silverlight, 449-450
projects (Silverlight), creating, 444-445
properties
auto-implemented properties, 10
defining, 9-10
initialization at construction, 12
metadata, attaching, 521-522
non-virtual properties, overriding, 17-19
overriding base classes, 16-17
Protected accessibility modifier, 8
Protected internal accessibility modifier, 8
protecting data, multiple threads, 500-502
proxy classes, generating, Visual Studio, 225-226
pseudorandom numbers, 96
Public accessibility modifier, 8
publishing events, 283
query results, ordering, LINQ, 463
querying
Entity Framework, LINQ, 467-469
object collections, LINQ, 462-463
web services, LINQ, 469-471
XML documents
LINQ, 466-467
XPath, 271-272
radians, degrees, converting to, 93
random numbers
cryptographically secure random numbers, 97
generating, 96-97
reader-writer locks, 513-514
reading
binary files, 179
files, XML files, 268-270
text files, 178-179
readonly fields, 13
rectangles
intersection, determining, 357
points, determining, 355
rectangular arrays, creating, 50-51
reference types, constraining, 147
references, weak references, 484
reflection, 520
code, instantiating, 523
types, discovering, 520-521
Reflector, 622
RegexBuddy, 630
registry
accessing, 583-584
XML configuration files, compared, 584
regular expressions, 132
advanced text searches, 132
improving, 137
text
extracting groups, 132-133
replacing, 133-134
user input, validating, 134-136
rendering 3D geometry, WPF, 389-392
replacing text, regular expressions, 133-134
resetting wait cursor, Windows Forms, 327-328
resizing graphics, 350-351
resource files, localization, 568-569
resources, thread access, limiting, 506-508
restoring session state, cookies, 434-436
restricted permissions, application data, saving, 198-200
rethrowing exceptions, 66-67
retrieving power state information, 595
reuse, code, multiple constructors, 14
Reverse Words in a String listing (7.2), 124-125
reversing
linked lists, 167
values, arrays, 166-167
words, strings, 124-125
RGB color format, HSV color format, converting between, 331-335
rotation, graphics, 342
rounding numbers, 93-95
RoutedEvents, WPF, 377
RSS feeds
producing dynamically in IIS, 220-222
running
stored procedures, databases, 247-248
tasks in Parallel, 494-495
running code, timing, 530-531
runtime
methods, choosing, 280-282
type checking, deferring, 47-49
saving application data, restricted permissions, 198-200
scaling graphics, 343
screen locations, applications, remembering, 543-544
screen savers, WPF, creating in, 605-614
ScreenSaverWindow.xaml listing (27.5), 607
ScreenSaverWindow.xaml.cs listing (27.6), 607-611
searches
directories and files, 188-190
plugins, 526-528
Searching for a File or Directory listing (11.2), 188-190
security information, files, retrieving, 183-184
SerializableAttribute ( ), 195-196
Serialization, objects, XML, 262-266
serializing
memory streams, 198
objects, 194-197
servers
data validation, ASP.NET, 425-429
SQL Server, connecting to, 240-241
TCP/IP servers, creating, 204-208
services, discovering, during runtime, 233-236
session state, ASP.NET, storing and restoring, 433-436
Session State Demo—Default.aspx listing (19.15), 431-432
Session State Demo—Default.aspx.cs listing (19.16), 432-433
SetPixel( ) method, 347
shapes
circles, points, 355-356
ellipse, points, 356-357
rectangles
intersection, 357
points, 355
shared assemblies, creating, 525
shared integer primitives, manipulating, 503
shearing graphics, 343
shuffling elements, collections, 620
signaling events, threads, 509-512
Silverlight, 444
3D surfaces, controls, 452-453
browsers, running applications out of, 453-454
documents, printing, 457
projects, creating, 444-445
UI threads, timer events, 451-452
versions, 444
videos
playing over web, 445-448
progress bar, 449-450
webcams, capturing, 455-457
Silverlight applications, localization, 570-572
single event, multiple events, combining into, 532-536
single instance, applications, limiting, 505-506
sizes, files, retrieving, 183
Smart Tags, Visual Studio, 20
SMTP (Simple Mail Transport Protocol), email, sending via, 208-209
social security numbers, validating, 134
sortable types, creating, 34-35
sorting number strings naturally, 125, 128-130
sound files, playing, 619-620
splash screens, displaying, 614
Windows Forms, 614-616
WPF, 616-619
SplashScreen.xaml listing (27.9), 616-619
Split ( ), 121
split window interfaces, Windows Forms, creating for, 302-303
splitting strings, 121-122
SQL, LINQ, compared, 462
SQL objects, external resources, wrapping, 246
SQL Server, connecting to, 240-241
SqlCommand object, 246
standard commands, WPF, 370-371
statements, values, choosing, 52-53
static constructors, adding, 12
static members, defining, 10-11
status bars
windows, adding to, 369
Windows Forms, adding to, 300
stopwatch, code, profiling, 530-531
stored procedures, databases, running, 247-248
streams, combining, 181-183
String class, 121
string indexes, types, 37
String.Concat( ) method, 119
String.IsNullOrEmpty( ) method, 117
String.IsNullOrWhitespace( ) method, 117
StringBuilder, types, formatting, 31-32
StringBuilder ( ), strings, concatenating, 117-119
strings, 110
binary data, converting to, 122-124
bytes
converting to, 110-111
case, changing, 116
comparing, 115-116
concatenating
collection items, 119-120
StringBuilder, 117-119
custom encoding scheme, 111, 114-115
empty strings, detecting, 117
enumerations, converting to, 103-104
flags, converting to, 104
format strings, 84-85
newline characters, appending to, 120
number format strings, 85
number strings, sorting naturally, 125, 128-130
numbers
converting, 86-87
formatting in, 82-85
splitting, 121-122
tokens, reversing, 124-125
Unicode, 111
words, reversing, 124-125
stripping HTML of tags, 214
structs, 8
creating, 21-22
styles, WPF, triggers, 378
subscriber pattern, implementing, 536-539
subscriptions, events, 282-283
system changes, monitoring, 192-194
system configuration changes, responding to, 593
System.Numerics.Complex class, 80
System.Text namespace, 110
tables (databases), data
deleting, 246-247
displaying, 250-257
inserting, 245-246
tags, HTML, stripping, 214
tasks
processors, splitting among, 492-495
running in Parallel class, 494-495
TCP Server listing (12.1), 205-206
TCP/IP clients and servers, creating, 204-208
templates, controls, designing, 386-387
temporary filenames, creating, 192
text
drawing, 344
extracting groups, regular expressions, 132-133
forms, cutting and pasting, 323
replacing, regular expressions, 133-134
text files, creating, 178-179
text searches, regular expressions, 132
TextTokenizer application, 515-516
thread pools, 497-499
threads, 492
creating, 498-499
culture settings, 562-563
data, exchanging, 499-500
multiple threads
data protection, 500-502
data structures, 495
resource access, limiting number, 506-508
throwing exceptions, 64
rethrowing, 66-67
thumbnail graphics, creating, 351-352
timer events, UI threads, Silverlight, 451-452
timers
functions, calling, 313-314
multithreaded timers, 512
timing code, 530-531
tokens, strings, reversing, 124-125
toolbars
windows, adding to, 369-370
Windows Forms, adding to, 301-302
tools
finding, 631
FXCop, 626-627
LINQPad, 630-631
NDepend, 626
NUnit, 623-625
Process Explorer, 628-629
Process Monitor, 628-629
Reflector, 622
RegexBuddy, 630
Virtual PC, 627-628
ToolStrip controls, 297
ToolStripItem, 297
ToolStripMenuItem, 299
ToString( ) method, 79, 82, 104, 385
overriding, 29
types, formatting, 28-31
trace information, viewing, ASP.NET, 402-403
transactions, databases, 248-250
transformations (graphics), 341
rotation, 342
scaling, 343
shearing, 343
translations, 342
translating hostnames to IP addresses, 202
translations, graphics, 342
transparent images, drawing, 345
trie structures, creating, 173-176
triggers, WPF, style changes, 378
TryParseExact( ) method, 97
tuples, creating, 151
type checking, 524
deferring to runtime, 47-49
types. See also classes
anonymous types, creating, 22-23
coverting, 40-41
creating, 28
discovering, 520-521
dynamically sized array of objects, creating, 140
enumerating, assemblies, 520-521
equality, determining, 32-33
floating-point types, choosing, 78
formatting
ICustomFormatter, 31-32
StringBuilder, 31-32
ToString( ) method, 28-31
generic types, constraining, 146-149
hashable types, creating, 34
implicit typing, 46-47
indexes, 36-37
inference, 46-47
methods, adding, 54-55
multiple generic types, creating, 146
operators, overloading, 39-40
parameters, labels, 146
reference types, constraining, 147
sortable types, creating, 34-35
value types
constraining, 147
nulls, 42
UAC (User Access Control), administration privileges, requesting, 578-581
UI state, maintaining, ASP.NET, 430
UI threads
timer events, Silverlight, 451-452
updates, ensuring, 285-287
UIs, websites, creating, 418-422
Ultimate Developer and Power Users Tool List for Windows, 631
unchanged memory, allocating, 488-489
undo commands, implementing, command objects, 545-552
unhandled exceptions, catching, 72-75
Unicode strings, 111
unmanaged resources, cleaning up, finalization, 475-477
unrecoverable errors, indicating, 64
updates, UI threads, ensuring, 285-287
updating, databases, DataSet, 252-254
uploading files, FTP sites, 213-214
user configuration values, Windows Forms, 314-316
user controls
ASP.NET, creating, 414-417
Windows Forms, creating, 308-313
user date, maintaining, ASP.NET, 431-433
user folders, paths, retrieving, 194
user input
data validation, ASP.NET, 425-429
validating, regular expressions, 134-136
user logins, authentication, 406-409
user-defined objects, forms, cutting and pasting, 325-327
users
session state, storing, 433-434
web pages, redirecting to, 405-406
validation
user input
ASP.NET, 425-429
regular expressions, 134-136
XML documents, 270-271
Validation Demo—Default.aspx listing (19.13), 425-427
Validation Demo—Default.aspx.cs listing (19.14), 427-428
validity, enumerations, determining, 103
value types
constraining, 147
nulls, assigning to, 42
values
arrays, reversing, 166-167
enumerations, listing, 103
evaluation, deferring, 57-58
explicit values, enumerations, 100
statements, choosing, 52-53
variables, declaring, 46-47
versatility, 28
Vertex3d class, 9
formatting
ICustomFormatter, 31-32
StringBuilder, 31-32
ToString( ) method, 28-31
video
3D surfaces, WPF, 392-394
playing over web, Silverlight, 445-448
progress bars, Silverlight, 449-450
virtual mode, Windows Forms ListView, 317-318
Virtual PC, 627-628
Vista file dialogs, 594
Visual Studio
databases, creating, 238-239
proxy classes, generating, 226
Smart Tags, 20
wait cursor, Windows Forms, resetting, 327-328
WCF (Windows Communication Foundation), 208
Internet, communication over, 231-232
multiple machines, communication, 229-230
processes, communicating between, 222-229
service interface, defining, 223-224
services, discovering, 233-236
weak references, 484
web browser capabilities, determining, 404
web browsers, applications
embedding, 214-216
running out of, 453-454
web pages
AJAX pages, creating, 423-425
master pages, ASP.NET, 409-411
users, redirecting to, 405-406
web services, querying, LINQ, 469-471
websites
menus, adding, 411-412
UIs, creating, 418-422
webcams, capturing, Silverlight, 455-457
WidgetGraphicView.xaml listing (25.2), 558
Win32 API functions, calling, .NET, 588-589
Window1.xaml listing (27.1), 600-601
Window1.xaml.cs listing (18.2), 381-383
Window1.xaml.cs listing (27.2), 601
windows
nonrectangular windows, creating, 598-601
WPF (Windows Presentation Foundation)
displaying, 366-367
menu bars, 367-368
positioning controls, 367
status bars, 369
toolbars, 369-370
Windows 7
file dialogs, 594
functionality, accessing, 593-594
libraries, accessing, 594
anti-aliasing, 348-349
bitmap pixels, accessing directly, 347-348
brushes, creating, 339-341
clipboard, 323-327
color picker, 330-331
colors, converting, 331-335
configuration values, 314-316
controls, binding data, 250-252
flicker-free drawing, 349-350
forms, inheritance, 304-308
graphics
color definitions, 330
resizing, 350-351
thumbnails, 351-352
horizontal tilt wheel, 319-323
images, drawing, 344-345
ListView, virtual mode, 317-318
menu bars, adding, 297-299
menu items, disabling dynamically, 300
modal forms, creating, 296
modeless forms, creating, 296
mouse cursor, distance, 354-355
multiscreen captures, taking, 352-354
nonrectangular windows, creating, 598-600
off-screen buffers, drawing to, 346-347
points
circles, 355-356
ellipse, 356-357
mouse cursor, 354-355
rectangles, 355
rectangles, intersection, 357
shapes, drawing, 335-337
splash screens, displaying, 614-616
split window interface, creating, 302-303
status bars, adding, 300
text, drawing, 344
timers, 313-314
toolbars, adding, 301-302
transformations, 341
rotation, 342
scaling, 343
shearing, 343
translations, 342
transparent images, drawing, 345
unhandled exceptions, catching, 73
user controls, creating, 308-313
wait cursor, resetting, 327-328
Windows Forms applications, localization, 563-564
Windows Internals, 475
Windows Presentation Foundation (WPF). See WPF (Windows Presentation Foundation)
Windows services
creating, 585-588
managing, 584
UI threads, updates, 286
WPF applications, 400
WinForms applications, WPF, 398-399
words, strings, reversing, 124-125
WPF (Windows Presentation Foundation), 366
3D geometry, rendering, 389-392
3D surfaces
interactive controls, 395-398
video, 392-394
bound data, displaying, 385-386
commands, enabling/disabling, 374
controls
appearance/functionality, 377
binding data to, 254-256
binding properties, 379-383
designing, 386-387
expanding/collapsing, 375-376
custom commands, 371-373
data binding
collections, 385
value conversions, 383-385
value formatting, 383
element properties, animating, 388-389
events, responding to, 376-377
layout method, choosing, 367
Model-View-ViewModel pattern, 552-562
defining model, 553-554
defining view, 557-558
defining ViewModel, 555-556
nonrectangular windows, creating, 600-601
RoutedEvents, 377
screen savers, creating, 605-614
splash screens, displaying, 616-619
standard commands, 370-371
triggers, style changes, 378
UI threads, updates, 286
windows
displaying, 366-367
menu bars, 367-368
positioning controls, 367
status bars, 369
toolbars, 369-370
WinForms, applications in, 398-400
WPF applications
localization, 565-569
unhandled exceptions, catching, 74
writing
binary files, 179
events, event logs, 581-583
text files, 178-179
XML, 266-267
XAML, localization, 566-568
XML (eXtensible Markup Language), 262
database data, transforming to, 273-276
generating, LINQ, 467
objects, serialization, 262-266
querying, XPath, 271-272
writing, 266-267
XML documents, validating, 270-271
XML files, reading, 268-270
XML configuration files, registry, compared, 584
XML documents
querying, LINQ, 466-467
validating, 270-271
XML files, reading, 268-270
XmlDocument class
XML, writing, 266-267
XML files, reading, 268
XmlTextReader class, XML files, reading, 269-270
XmlWriter, XML, writing, 267
XPath, XML, querying, 271-272
zip codes, validating, 135