Section 1 An introduction to Visual Studio |
|
|
Chapter 1 How to get started with Visual Studio |
|
|
|
An introduction to .NET development |
|
|
4 | (10) |
|
|
4 | (2) |
|
Visual Studio and the .NET programming languages |
|
|
6 | (2) |
|
|
8 | (2) |
|
|
10 | (2) |
|
How a C# application is compiled and run |
|
|
12 | (1) |
|
How C# differs from the other .NET languages |
|
|
12 | (1) |
|
|
12 | (2) |
|
A tour of the Visual Studio IDE |
|
|
14 | (12) |
|
How to start Visual Studio |
|
|
14 | (2) |
|
How to open or close an existing project |
|
|
16 | (1) |
|
Some possible menu variations |
|
|
16 | (2) |
|
How to use the Form Designer |
|
|
18 | (2) |
|
How to use the Code Editor |
|
|
20 | (2) |
|
How to use the Solution Explorer |
|
|
22 | (2) |
|
How to work with Visual Studio's windows |
|
|
24 | (2) |
|
|
26 | (2) |
|
|
26 | (1) |
|
|
26 | (2) |
|
How to upgrade projects and change .NET Framework versions |
|
|
28 | (8) |
|
How to upgrade projects created in earlier versions of C# |
|
|
28 | (2) |
|
How to change the .NET Framework version used by a project |
|
|
30 | (6) |
|
Chapter 2 How to design a Windows Forms application |
|
|
|
How to set options and create a new project |
|
|
36 | (4) |
|
How to set the Visual Studio options |
|
|
36 | (1) |
|
How to change the import and export settings |
|
|
36 | (2) |
|
How to create a new project |
|
|
38 | (2) |
|
|
40 | (12) |
|
The design of the Invoice Total form |
|
|
40 | (2) |
|
How to add controls to a form |
|
|
42 | (2) |
|
|
44 | (2) |
|
Common properties for forms and controls |
|
|
46 | (2) |
|
How to add navigation features |
|
|
48 | (2) |
|
The property settings for the Invoice Total form |
|
|
50 | (1) |
|
How to use Document Outline view |
|
|
50 | (2) |
|
How to name and save the files of a project |
|
|
52 | (6) |
|
How to name the files of a project |
|
|
52 | (1) |
|
How to save the files of a project |
|
|
52 | (6) |
|
Chapter 3 How to code and test a Windows Forms application |
|
|
|
An introduction to coding |
|
|
58 | (6) |
|
Introduction to object-oriented programming |
|
|
58 | (2) |
|
How to refer to properties, methods, and events |
|
|
60 | (2) |
|
How an application responds to events |
|
|
62 | (2) |
|
How to add code to a form |
|
|
64 | (8) |
|
How to create an event handler for the default event of a form or control |
|
|
64 | (1) |
|
How to delete an event handler |
|
|
64 | (2) |
|
How IntelliSense helps you enter the code for a form |
|
|
66 | (2) |
|
The event handlers for the Invoice Total form |
|
|
68 | (2) |
|
How to detect and correct syntax errors |
|
|
70 | (2) |
|
|
72 | (16) |
|
How to code with a readable style |
|
|
72 | (2) |
|
|
74 | (2) |
|
How to work with the Text Editor toolbar |
|
|
76 | (1) |
|
How to collapse or expand blocks of code |
|
|
76 | (2) |
|
|
78 | (1) |
|
|
78 | (1) |
|
How to print the source code |
|
|
78 | (2) |
|
|
80 | (2) |
|
|
82 | (2) |
|
How to use the annotations in the scroll bar |
|
|
84 | (2) |
|
How to get help information |
|
|
86 | (2) |
|
How to run, test, and debug a project |
|
|
88 | (12) |
|
|
88 | (2) |
|
|
90 | (2) |
|
How to debug runtime errors |
|
|
92 | (8) |
Section 2 The C# language essentials |
|
|
Chapter 4 How to work with numeric and string data |
|
|
|
How to work with the built-in value types |
|
|
100 | (14) |
|
|
100 | (2) |
|
How to declare and initialize variables |
|
|
102 | (1) |
|
How to declare and initialize constants |
|
|
102 | (2) |
|
How to code arithmetic expressions |
|
|
104 | (2) |
|
How to code assignment statements |
|
|
106 | (2) |
|
How to work with the order of precedence |
|
|
108 | (2) |
|
|
110 | (2) |
|
How to use the Math class |
|
|
112 | (2) |
|
|
114 | (4) |
|
How to declare and initialize a string |
|
|
114 | (1) |
|
How to join and append strings |
|
|
114 | (2) |
|
How to include special characters in strings |
|
|
116 | (2) |
|
How to convert data types |
|
|
118 | (6) |
|
The .NET structures and classes that define data types |
|
|
118 | (2) |
|
How to use methods to convert data types |
|
|
120 | (2) |
|
How to use methods to convert numbers to formatted strings |
|
|
122 | (2) |
|
Three other skills for working with data |
|
|
124 | (6) |
|
|
124 | (2) |
|
How to declare and use enumerations |
|
|
126 | (2) |
|
How to work with nullable types and the null-coalescing operator |
|
|
128 | (2) |
|
Two versions of the Invoice Total application |
|
|
130 | (8) |
|
The basic Invoice Total application |
|
|
130 | (2) |
|
The enhanced Invoice Total application |
|
|
132 | (6) |
|
Chapter 5 How to code control structures |
|
|
|
How to code Boolean expressions |
|
|
138 | (4) |
|
How to use the relational operators |
|
|
138 | (2) |
|
How to use the logical operators |
|
|
140 | (2) |
|
How to code conditional statements |
|
|
142 | (6) |
|
How to code if-else statements |
|
|
142 | (2) |
|
How to code switch statements |
|
|
144 | (2) |
|
An enhanced version of the Invoice Total application |
|
|
146 | (2) |
|
|
148 | (8) |
|
How to code while and do-while loops |
|
|
148 | (2) |
|
|
150 | (2) |
|
Loops that use break and continue statements |
|
|
152 | (2) |
|
Debugging techniques for programs with loops |
|
|
154 | (2) |
|
The Future Value application |
|
|
156 | (8) |
|
The design and property settings for the form |
|
|
156 | (2) |
|
|
158 | (6) |
|
Chapter 6 How to code methods and event handlers |
|
|
|
How to code and call methods |
|
|
164 | (10) |
|
|
164 | (2) |
|
|
166 | (2) |
|
How to use optional parameters |
|
|
168 | (1) |
|
How to use named arguments |
|
|
168 | (2) |
|
How to use refactoring to create a new method and its calling statement |
|
|
170 | (2) |
|
When and how to pass arguments by reference and by value |
|
|
172 | (2) |
|
How to work with events and delegates |
|
|
174 | (6) |
|
How to generate an event handler for any event |
|
|
174 | (2) |
|
|
176 | (2) |
|
How to handle multiple events with one event handler |
|
|
178 | (2) |
|
Another version of the Future Value application |
|
|
180 | (8) |
|
The event handlers and the CalculateFutureValue method |
|
|
180 | (2) |
|
Some of the generated code |
|
|
182 | (6) |
|
Chapter 7 How to handle exceptions and validate data |
|
|
|
An introduction to exceptions |
|
|
188 | (4) |
|
|
188 | (2) |
|
How to display a dialog box |
|
|
190 | (2) |
|
How to use structured exception handling |
|
|
192 | (10) |
|
How to catch an exception |
|
|
192 | (2) |
|
How to use the properties and methods of an exception |
|
|
194 | (2) |
|
How to catch specific types of exceptions |
|
|
196 | (2) |
|
How to throw an exception |
|
|
198 | (2) |
|
The Future Value application with exception handling |
|
|
200 | (2) |
|
|
202 | (6) |
|
How to validate a single entry |
|
|
202 | (2) |
|
How to use generic methods to validate an entry |
|
|
204 | (2) |
|
How to validate multiple entries |
|
|
206 | (2) |
|
The Future Value application with data validation |
|
|
208 | (8) |
|
|
208 | (1) |
|
|
208 | (8) |
|
Chapter 8 How to use arrays and collections |
|
|
|
How to work with one-dimensional arrays |
|
|
216 | (8) |
|
|
216 | (2) |
|
How to assign values to the elements of an array |
|
|
218 | (2) |
|
|
220 | (2) |
|
How to use foreach loops to work with arrays |
|
|
222 | (2) |
|
How to work with rectangular arrays |
|
|
224 | (4) |
|
How to create a rectangular array |
|
|
224 | (1) |
|
How to assign values to a rectangular array |
|
|
224 | (2) |
|
How to work with rectangular arrays |
|
|
226 | (2) |
|
How to work with jagged arrays |
|
|
228 | (4) |
|
How to create a jagged array |
|
|
228 | (1) |
|
How to assign values to a jagged array |
|
|
228 | (2) |
|
How to work with jagged arrays |
|
|
230 | (2) |
|
More skills for working with arrays |
|
|
232 | (8) |
|
How to use the Array class |
|
|
232 | (2) |
|
How to refer to and copy arrays |
|
|
234 | (2) |
|
How to code methods that work with arrays |
|
|
236 | (2) |
|
How to use the null-conditional operator |
|
|
238 | (2) |
|
How to work with collections |
|
|
240 | (20) |
|
Commonly used collection classes |
|
|
240 | (2) |
|
Typed vs. untyped collections |
|
|
242 | (2) |
|
|
244 | (4) |
|
How to work with a sorted list |
|
|
248 | (4) |
|
How to work with queues and stacks |
|
|
252 | (2) |
|
How to work with an array list |
|
|
254 | (6) |
|
Chapter 9 How to work with dates and strings |
|
|
|
How to work with dates and times |
|
|
260 | (8) |
|
How to create a DateTime value |
|
|
260 | (2) |
|
How to get the current date and time |
|
|
262 | (1) |
|
How to format DateTime values |
|
|
262 | (2) |
|
How to get information about dates and times |
|
|
264 | (2) |
|
How to perform operations on dates and times |
|
|
266 | (2) |
|
|
268 | (10) |
|
The properties and methods of the String class |
|
|
268 | (2) |
|
Code examples that work with strings |
|
|
270 | (2) |
|
More code examples that work with strings |
|
|
272 | (2) |
|
How to use the Parse and TryParse methods to validate numeric entries |
|
|
274 | (2) |
|
How to use the StringBuilder class |
|
|
276 | (2) |
|
How to format numbers, dates, and times |
|
|
278 | (10) |
|
|
278 | (2) |
|
How to format dates and times |
|
|
280 | (2) |
|
How to use interpolated strings |
|
|
282 | (6) |
|
Chapter 10 More skills for working with Windows forms and controls |
|
|
|
How to work with controls |
|
|
288 | (12) |
|
Five more types of controls |
|
|
288 | (2) |
|
How to work with combo boxes and list boxes |
|
|
290 | (4) |
|
How to work with check boxes and radio buttons |
|
|
294 | (1) |
|
How to work with group boxes |
|
|
294 | (2) |
|
How to use Tab Order view to set the tab order |
|
|
296 | (2) |
|
How to get the information you need for using a control |
|
|
298 | (2) |
|
How to work with multi-form projects |
|
|
300 | (12) |
|
How to add a form to a project |
|
|
300 | (2) |
|
The code that's generated for a new form |
|
|
302 | (2) |
|
|
304 | (2) |
|
How to display the first form of an application |
|
|
306 | (2) |
|
How to display a form as a dialog box |
|
|
308 | (2) |
|
How to pass data between a form and a custom dialog box |
|
|
310 | (2) |
|
How to use the MessageBox class |
|
|
312 | (4) |
|
How to display a dialog box and get the user response |
|
|
312 | (2) |
|
How to use the FormClosing event |
|
|
314 | (2) |
|
|
316 | (14) |
|
|
316 | (2) |
|
|
318 | (1) |
|
The code for the Customer form |
|
|
318 | (4) |
|
The code for the Payment form |
|
|
322 | (8) |
|
Chapter 11 How to debug an application |
|
|
|
Basic debugging techniques |
|
|
330 | (10) |
|
How to set the debugging options |
|
|
330 | (2) |
|
How to work in break mode |
|
|
332 | (1) |
|
How to use the Edit and Continue feature |
|
|
332 | (2) |
|
How to work with data tips |
|
|
334 | (2) |
|
|
336 | (2) |
|
How to control the execution of an application |
|
|
338 | (2) |
|
How to use the debugging windows |
|
|
340 | (22) |
|
How to use the Locals window to monitor variables |
|
|
340 | (1) |
|
How to use the Autos window to monitor variables |
|
|
340 | (2) |
|
How to use Watch windows to monitor expressions |
|
|
342 | (2) |
|
How to use the Immediate window to execute commands |
|
|
344 | (2) |
|
How to use the Call Stack window to monitor called methods |
|
|
346 | (2) |
|
How to use the Call Hierarchy window to navigate through your code |
|
|
348 | (2) |
|
How to use the Output window to view project information |
|
|
350 | (2) |
|
How to write data to the Output window |
|
|
352 | (2) |
|
How use the Visualizer dialog boxes to view strings |
|
|
354 | (8) |
Section 3 Object-oriented programming |
|
|
Chapter 12 How to create and use classes |
|
|
|
An introduction to classes |
|
|
362 | (8) |
|
How classes can be used to structure an application |
|
|
362 | (2) |
|
The members you can define within a class |
|
|
364 | (2) |
|
The code for the Product class |
|
|
366 | (2) |
|
|
368 | (2) |
|
Basic skills for creating a class |
|
|
370 | (12) |
|
How to add a class file to a project |
|
|
370 | (2) |
|
|
372 | (2) |
|
|
374 | (2) |
|
|
376 | (2) |
|
|
378 | (2) |
|
How to code static members |
|
|
380 | (2) |
|
The Product Maintenance application |
|
|
382 | (8) |
|
The operation of the Product Maintenance application |
|
|
382 | (2) |
|
The classes used by the Product Maintenance application |
|
|
384 | (2) |
|
The code for the Product Maintenance application |
|
|
386 | (4) |
|
More skills for creating a class |
|
|
390 | (6) |
|
How to code auto-implemented properties |
|
|
390 | (2) |
|
How to code expression-bodied properties and methods |
|
|
392 | (2) |
|
How to generate code stubs |
|
|
394 | (2) |
|
How to browse, diagram, and display and edit classes |
|
|
396 | (6) |
|
How to browse the classes in a solution |
|
|
396 | (2) |
|
How to use class diagrams and the Class Details window |
|
|
398 | (2) |
|
How to use the Peek Definition window |
|
|
400 | (2) |
|
How to work with structures |
|
|
402 | (8) |
|
How to create a structure |
|
|
402 | (2) |
|
|
404 | (6) |
|
Chapter 13 How to work with indexers, delegates, events, and operators |
|
|
|
An introduction to the ProductList class |
|
|
410 | (4) |
|
The code for a simple ProductList class |
|
|
410 | (2) |
|
The specifications for the enhanced ProductList class |
|
|
412 | (2) |
|
How to work with indexers |
|
|
414 | (4) |
|
|
414 | (2) |
|
How to throw an argument exception |
|
|
416 | (2) |
|
How to work with delegates and events |
|
|
418 | (6) |
|
How to define and use a delegate |
|
|
418 | (2) |
|
How to define and use events |
|
|
420 | (2) |
|
How to use anonymous methods and lambda expressions with delegates and events |
|
|
422 | (2) |
|
How to overload operators |
|
|
424 | (6) |
|
An introduction to operator overloading |
|
|
424 | (2) |
|
How to overload arithmetic operators |
|
|
426 | (2) |
|
How to overload relational operators |
|
|
428 | (2) |
|
An enhanced version of the Product Maintenance application |
|
|
430 | (10) |
|
The code for the ProductList class |
|
|
430 | (4) |
|
The code for the Product Maintenance form |
|
|
434 | (6) |
|
Chapter 14 How to work with inheritance |
|
|
|
An introduction to inheritance |
|
|
440 | (8) |
|
|
440 | (2) |
|
How the .NET Framework uses inheritance |
|
|
442 | (2) |
|
Methods inherited from the System.Object class |
|
|
444 | (2) |
|
How to use inheritance in your applications |
|
|
446 | (2) |
|
Basic skills for working with inheritance |
|
|
448 | (6) |
|
How to create a base class |
|
|
448 | (2) |
|
|
450 | (2) |
|
|
452 | (2) |
|
An inheritance version of the Product Maintenance application |
|
|
454 | (12) |
|
The operation of the Product Maintenance application |
|
|
454 | (2) |
|
The code for the Product, Book, and Software classes |
|
|
456 | (4) |
|
The code for the ProductList class |
|
|
460 | (2) |
|
The code for the Product Maintenance form |
|
|
462 | (2) |
|
The code for the New Product form |
|
|
464 | (2) |
|
|
466 | (4) |
|
How to use the Type class to get information about an object's type |
|
|
466 | (2) |
|
How to use casting with inheritance |
|
|
468 | (2) |
|
How to work with abstract and sealed classes |
|
|
470 | (8) |
|
How to work with abstract classes |
|
|
470 | (2) |
|
How to work with sealed classes |
|
|
472 | (6) |
|
Chapter 15 How to work with interfaces and generics |
|
|
|
How to work with interfaces |
|
|
478 | (12) |
|
An introduction to interfaces |
|
|
478 | (2) |
|
Some of the interfaces defined by the .NET Framework |
|
|
480 | (2) |
|
How to create an interface |
|
|
482 | (2) |
|
How to implement an interface |
|
|
484 | (2) |
|
A Product class that implements the ICloneable interface |
|
|
486 | (2) |
|
How to use an interface as a parameter |
|
|
488 | (2) |
|
How to work with generics |
|
|
490 | (18) |
|
How to code a class that defines a generic collection |
|
|
490 | (4) |
|
Some of the generic interfaces defined by the .NET Framework |
|
|
494 | (2) |
|
How to implement the IComparable<> interface |
|
|
496 | (2) |
|
|
498 | (2) |
|
How to implement the IEnumerable<> interface |
|
|
500 | (2) |
|
How to code an interface that uses generics |
|
|
502 | (6) |
|
Chapter 16 How to organize and document your classes |
|
|
|
How to organize your classes |
|
|
508 | (6) |
|
How to code multiple classes in a single file |
|
|
508 | (2) |
|
How to split a single class across multiple files |
|
|
510 | (2) |
|
How to work with namespaces |
|
|
512 | (2) |
|
How to document your classes |
|
|
514 | (4) |
|
How to add XML documentation to a class |
|
|
514 | (2) |
|
How to view the XML documentation |
|
|
516 | (2) |
|
How to create and use class libraries |
|
|
518 | (10) |
|
|
518 | (2) |
|
How to create a class library project |
|
|
520 | (2) |
|
How to add a reference to a class library |
|
|
522 | (1) |
|
How to use the classes in a class library |
|
|
522 | (6) |
Section 4 Database programming |
|
|
Chapter 17 An introduction to database programming |
|
|
|
An introduction to client/server systems |
|
|
528 | (4) |
|
The hardware components of a client/server system |
|
|
528 | (2) |
|
The software components of a client/server system |
|
|
530 | (2) |
|
An introduction to relational databases |
|
|
532 | (8) |
|
|
532 | (2) |
|
How the tables in a database are related |
|
|
534 | (2) |
|
How the columns in a table are defined |
|
|
536 | (2) |
|
The design of the MMABooks database |
|
|
538 | (2) |
|
How to use SQL to work with a relational database |
|
|
540 | (6) |
|
How to query a single table |
|
|
540 | (2) |
|
How to join data from two or more tables |
|
|
542 | (2) |
|
How to add, update, and delete data in a table |
|
|
544 | (2) |
|
An introduction to ADO.NET |
|
|
546 | (14) |
|
|
546 | (2) |
|
How the basic ADO.NET components work |
|
|
548 | (2) |
|
Concurrency and the disconnected data architecture |
|
|
550 | (2) |
|
How a dataset is organized |
|
|
552 | (2) |
|
How to work with data without using a data adapter |
|
|
554 | (2) |
|
Two ways to create ADO.NET objects |
|
|
556 | (4) |
|
Chapter 18 How to work with data sources and datasets |
|
|
|
How to create a data source |
|
|
560 | (14) |
|
How to use the Data Sources window |
|
|
560 | (2) |
|
How to start the Data Source Configuration Wizard |
|
|
562 | (1) |
|
How to choose a data source type |
|
|
562 | (2) |
|
How to choose the database model for a data source |
|
|
564 | (1) |
|
How to choose the connection for a data source |
|
|
564 | (2) |
|
How to create a connection to a database |
|
|
566 | (2) |
|
How to save a connection string in the app.config file |
|
|
568 | (2) |
|
How to choose database objects for a data source |
|
|
570 | (2) |
|
The schema file created by the Data Source Configuration Wizard |
|
|
572 | (2) |
|
|
574 | (10) |
|
How to generate a DataGridView control from a data source |
|
|
574 | (2) |
|
A Product Maintenance application that uses a DataGridView control |
|
|
576 | (2) |
|
How to change the controls associated with a data source |
|
|
578 | (2) |
|
How to generate detail controls from a data source |
|
|
580 | (2) |
|
A Customer Maintenance application that uses TextBox controls |
|
|
582 | (2) |
|
How to handle data errors |
|
|
584 | (6) |
|
How to handle data provider errors |
|
|
584 | (2) |
|
How to handle ADO.NET errors |
|
|
586 | (2) |
|
How to handle data errors for a DataGridView control |
|
|
588 | (2) |
|
How to use the Dataset Designer |
|
|
590 | (12) |
|
How to view the schema for a dataset |
|
|
590 | (2) |
|
How to use the Query Builder |
|
|
592 | (2) |
|
How to preview the data for a query |
|
|
594 | (2) |
|
How to interpret the generated SQL statements |
|
|
596 | (6) |
|
Chapter 19 How to work with bound controls and parameterized queries |
|
|
|
How to work with bound text boxes and combo boxes |
|
|
602 | (6) |
|
How to format the data displayed in a text box |
|
|
602 | (2) |
|
How to bind a combo box to a data source |
|
|
604 | (2) |
|
How to use code to work with a binding source |
|
|
606 | (2) |
|
How to work with parameterized queries |
|
|
608 | (4) |
|
How to create a parameterized query |
|
|
608 | (2) |
|
How to use code to work with a parameterized query |
|
|
610 | (2) |
|
How to work with the ToolStrip control |
|
|
612 | (4) |
|
How to use the Items Collection Editor |
|
|
612 | (2) |
|
How to code an event handler for a ToolStrip item |
|
|
614 | (2) |
|
An enhanced Customer Maintenance application |
|
|
616 | (4) |
|
|
616 | (1) |
|
|
616 | (4) |
|
How to work with a DataGridView control |
|
|
620 | (8) |
|
How to modify the properties of a DataGridView control |
|
|
620 | (2) |
|
How to edit the columns of a DataGridView control |
|
|
622 | (2) |
|
How to format the data in the columns of a DataGridView control |
|
|
624 | (2) |
|
How to use a DataGridView control to create a Master/Detail form |
|
|
626 | (2) |
|
A Customer Invoice Display application |
|
|
628 | (10) |
|
|
628 | (1) |
|
|
628 | (1) |
|
The code for the Customer Invoices form |
|
|
628 | (10) |
|
Chapter 20 How to use ADO.NET to write your own data access code |
|
|
|
How to work with connections and commands |
|
|
638 | (4) |
|
How to create and work with connections |
|
|
638 | (2) |
|
How to create and work with commands |
|
|
640 | (2) |
|
How to create and work with parameters |
|
|
642 | (6) |
|
How to use parameters in SQL statements |
|
|
642 | (2) |
|
|
644 | (2) |
|
How to work with parameters |
|
|
646 | (2) |
|
|
648 | (4) |
|
How to create and work with a data reader |
|
|
648 | (2) |
|
How to execute queries that return a single value |
|
|
650 | (1) |
|
How to execute action queries |
|
|
650 | (2) |
|
A Customer Maintenance application that uses commands |
|
|
652 | (28) |
|
|
652 | (2) |
|
The class diagram for the business and database classes |
|
|
654 | (2) |
|
The code for the CustomerDB class |
|
|
656 | (6) |
|
The code for the StateDB class |
|
|
662 | (1) |
|
The code for the MMABooksDB class |
|
|
662 | (2) |
|
The code for the Customer Maintenance form |
|
|
664 | (6) |
|
The code for the Add/Modify Customer form |
|
|
670 | (10) |
Section 5 More skills for working wth data |
|
|
Chapter 21 How to work with files and data streams |
|
|
|
An introduction to the System.IO classes |
|
|
680 | (8) |
|
The classes for managing directories, files, and paths |
|
|
680 | (2) |
|
How files and streams work |
|
|
682 | (2) |
|
How to use the FileStream class |
|
|
684 | (2) |
|
How to use the exception classes for file I/O |
|
|
686 | (2) |
|
How to work with text files |
|
|
688 | (6) |
|
|
688 | (2) |
|
|
690 | (2) |
|
A class that works with a text file |
|
|
692 | (2) |
|
How to work with binary files |
|
|
694 | (8) |
|
How to write a binary file |
|
|
694 | (2) |
|
How to read a binary file |
|
|
696 | (2) |
|
A class that works with a binary file |
|
|
698 | (4) |
|
Chapter 22 How to work with XML files |
|
|
|
|
702 | (6) |
|
|
702 | (2) |
|
XML tags, declarations, and comments |
|
|
704 | (1) |
|
|
704 | (2) |
|
|
706 | (2) |
|
How to work with the XML Editor |
|
|
708 | (2) |
|
How to create a new XML file |
|
|
708 | (1) |
|
How to open an existing XML file |
|
|
708 | (1) |
|
|
708 | (2) |
|
|
710 | (14) |
|
How to use the XmlWriter class |
|
|
710 | (2) |
|
Code that writes an XML document |
|
|
712 | (2) |
|
How to use the XmlReader class |
|
|
714 | (2) |
|
How the XmlReader class reads nodes |
|
|
716 | (2) |
|
Code that reads an XML document |
|
|
718 | (1) |
|
A class that works with an XML file |
|
|
718 | (6) |
|
Chapter 23 How to use LINQ |
|
|
|
Basic concepts for working with LINO |
|
|
724 | (4) |
|
|
724 | (1) |
|
|
724 | (2) |
|
The three stages of a query operation |
|
|
726 | (2) |
|
How to code query expressions |
|
|
728 | (10) |
|
How to identify the data source for a query |
|
|
728 | (2) |
|
How to filter the results of a query |
|
|
730 | (2) |
|
How to sort the results of a query |
|
|
732 | (2) |
|
How to select fields from a query |
|
|
734 | (2) |
|
How to join data from two or more data sources |
|
|
736 | (2) |
|
How to use extension methods and lambda expressions |
|
|
738 | (4) |
|
How extension methods work |
|
|
738 | (1) |
|
Extension methods used to implement LINQ functionality |
|
|
738 | (2) |
|
How lambda expressions work |
|
|
740 | (1) |
|
How to use lambda expressions with extension methods |
|
|
740 | (2) |
|
A Customer Invoice application that uses generic lists |
|
|
742 | (4) |
|
|
742 | (2) |
|
|
744 | (2) |
|
A Customer Invoice application that uses a typed dataset |
|
|
746 | (8) |
|
|
746 | (2) |
|
|
748 | (6) |
|
Chapter 24 How to use the Entity Framework |
|
|
|
How to create an Entity Data Model |
|
|
754 | (8) |
|
How the Entity Framework works |
|
|
754 | (2) |
|
How to start an Entity Data Model with the Entity Data Model Wizard |
|
|
756 | (2) |
|
How to choose the Entity Framework version |
|
|
758 | (1) |
|
How to choose the database objects |
|
|
758 | (2) |
|
The Entity Data Model in the Entity Data Model Designer |
|
|
760 | (2) |
|
How to use the Entity Data Model Designer |
|
|
762 | (6) |
|
Basic skills for using the designer |
|
|
762 | (2) |
|
How to use the Model Browser window |
|
|
764 | (2) |
|
How to use the Mapping Details window |
|
|
766 | (2) |
|
How to use LINO to Entities |
|
|
768 | (4) |
|
How to retrieve data from a single table |
|
|
768 | (1) |
|
How to query across relationships |
|
|
768 | (2) |
|
How to load related objects |
|
|
770 | (2) |
|
How to insert, update, and delete data |
|
|
772 | (6) |
|
How to update an existing row |
|
|
772 | (1) |
|
How to delete an existing row |
|
|
772 | (2) |
|
|
774 | (2) |
|
How to provide for concurrency |
|
|
776 | (2) |
|
How to use bound controls with entities |
|
|
778 | (2) |
|
How to create an object data source |
|
|
778 | (1) |
|
|
778 | (2) |
|
A Customer Maintenance application |
|
|
780 | (20) |
|
|
780 | (2) |
|
|
782 | (1) |
|
The code for the MMABooksEntity class |
|
|
782 | (2) |
|
The code for the Customer Maintenance form |
|
|
784 | (4) |
|
The code for the Add/Modify Customer form |
|
|
788 | (12) |
Section 6 Enhancement and deployment |
|
|
Chapter 25 How to enhance the user interface |
|
|
|
Two types of user interfaces |
|
|
800 | (2) |
|
A single-document interface (SDI) |
|
|
800 | (1) |
|
A multiple-document interface (MDI) |
|
|
800 | (2) |
|
How to develop SDI applications |
|
|
802 | (4) |
|
How to use a startup form |
|
|
802 | (2) |
|
|
804 | (2) |
|
How to add menus to a form |
|
|
806 | (4) |
|
|
806 | (2) |
|
How to set the properties that work with menu items |
|
|
808 | (1) |
|
How to write code that works with menu items |
|
|
808 | (2) |
|
How to develop MDI applications |
|
|
810 | (4) |
|
How to create parent and child forms |
|
|
810 | (2) |
|
How to write code that works with parent and child forms |
|
|
812 | (2) |
|
How to add toolbars to a form |
|
|
814 | (4) |
|
|
814 | (2) |
|
How to write code that works with toolbars |
|
|
816 | (2) |
|
How to add help information |
|
|
818 | (6) |
|
|
818 | (1) |
|
How to add context-sensitive help |
|
|
818 | (6) |
|
Chapter 26 How to deploy an application |
|
|
|
An introduction to deploying Windows applications |
|
|
824 | (2) |
|
|
824 | (1) |
|
|
824 | (1) |
|
How a Setup program works |
|
|
824 | (2) |
|
|
826 | (2) |
|
How to create a release build |
|
|
826 | (1) |
|
How to copy the release build to the client machine |
|
|
826 | (2) |
|
|
828 | (12) |
|
How to publish an application |
|
|
828 | (2) |
|
How to select the files that are published |
|
|
830 | (2) |
|
How to select the prerequisites |
|
|
832 | (2) |
|
How to set the update options |
|
|
834 | (2) |
|
How to set the publish options |
|
|
836 | (2) |
|
How to install an application |
|
|
838 | (1) |
|
How to update an application |
|
|
838 | (2) |
|
How to create and use a Setup program |
|
|
840 | (10) |
|
How to create an InstallShield project |
|
|
840 | (2) |
|
How to use the InstallShield Project Assistant |
|
|
842 | (2) |
|
How to add output files to an InstallShield project |
|
|
844 | (2) |
|
How to create and view the installation files for a Setup program |
|
|
846 | (2) |
|
How to use a Setup program to install an application |
|
|
848 | (2) |
|
How to deploy database applications |
|
|
850 | |
|
Using ClickOnce deployment |
|
|
850 | (2) |
|
|
852 | |
Appendix A How to install and use the software for this book |
|
|
How to use the downloadable files |
|
|
856 | (2) |
|
How to install Visual Studio 2015 |
|
|
858 | (2) |
|
How to use the MMABooks database |
|
|
860 | |