|
Section 1 An introduction to Visual Studio |
|
|
|
Chapter 1 How to got started with Visual Studio |
|
|
|
An introduction to NET development |
|
|
4 | (1) |
|
Platforms for NET applications |
|
|
4 | (2) |
|
Visual Studio and the NET programming languages |
|
|
6 | (2) |
|
The NET Framework and NET Core |
|
|
8 | (2) |
|
|
10 | (2) |
|
How a C# application is compiled and run |
|
|
12 | (2) |
|
A tour of the Visual Studio IDE |
|
|
14 | (1) |
|
How to start Visual Studio |
|
|
14 | (2) |
|
How to open or close an existing project |
|
|
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) |
|
How to change the NET version used by a project |
|
|
26 | (2) |
|
|
28 | (1) |
|
|
28 | (1) |
|
|
28 | (2) |
|
|
30 | (4) |
|
Chapter 2 How to design a Windows Forms app |
|
|
|
|
34 | (1) |
|
How to create a new project |
|
|
34 | (2) |
|
How to configure a new Windows Forms app |
|
|
36 | (2) |
|
|
38 | (1) |
|
The design of the Invoice Total form |
|
|
38 | (2) |
|
How to add controls to a form |
|
|
40 | (2) |
|
|
42 | (2) |
|
Common properties for forms and controls |
|
|
44 | (2) |
|
How to add navigation features |
|
|
46 | (2) |
|
The property settings for the Invoice Total form |
|
|
48 | (2) |
|
How to finish your design |
|
|
50 | (1) |
|
How to rename the files of a project |
|
|
50 | (1) |
|
How to save the files of a project |
|
|
50 | (2) |
|
|
52 | (4) |
|
Chapter 3 How to code and test a Windows Forms app |
|
|
|
An introduction to coding |
|
|
56 | (1) |
|
Introduction to object-oriented programming |
|
|
56 | (2) |
|
How to refer to properties, methods, and events |
|
|
58 | (2) |
|
How an application responds to events |
|
|
60 | (2) |
|
How to add code to a form |
|
|
62 | (1) |
|
How to create an event handler for the default event of a form or control |
|
|
62 | (1) |
|
How to delete an event handler |
|
|
62 | (2) |
|
How IntelliSense helps you enter the code for a form |
|
|
64 | (2) |
|
The event handlers for the Invoice Total form |
|
|
66 | (2) |
|
How to detect and correct syntax errors |
|
|
68 | (2) |
|
|
70 | (1) |
|
How to code with a readable style |
|
|
70 | (2) |
|
|
72 | (2) |
|
How to work with the Text Editor toolbar |
|
|
74 | (1) |
|
How to collapse or expand blocks of code |
|
|
74 | (2) |
|
|
76 | (2) |
|
|
78 | (1) |
|
How to get help information |
|
|
78 | (2) |
|
How to run, test, and debug a project |
|
|
80 | (1) |
|
|
80 | (2) |
|
|
82 | (2) |
|
How to debug runtime errors |
|
|
84 | (2) |
|
|
86 | (6) |
|
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 |
|
|
92 | (1) |
|
|
92 | (2) |
|
How to declare and initialize variables |
|
|
94 | (2) |
|
How to declare and initialize constants |
|
|
96 | (2) |
|
How to code arithmetic expressions |
|
|
98 | (2) |
|
How to code assignment statements |
|
|
100 | (2) |
|
How to work with the order of precedence |
|
|
102 | (2) |
|
|
104 | (2) |
|
How to use the Math class |
|
|
106 | (2) |
|
How to generate random numbers |
|
|
108 | (2) |
|
|
110 | (1) |
|
How to declare and initialize a string |
|
|
110 | (1) |
|
How to join and append strings |
|
|
110 | (2) |
|
How to include special characters in strings |
|
|
112 | (2) |
|
How to code raw string literals |
|
|
114 | (2) |
|
How to convert data types |
|
|
116 | (1) |
|
The NET structures and classes that define data types |
|
|
116 | (2) |
|
How to use methods to convert data types |
|
|
118 | (2) |
|
How to use methods to convert numbers to formatted strings |
|
|
120 | (2) |
|
Four other skills for working with data |
|
|
122 | (1) |
|
|
122 | (2) |
|
How to declare and use enumerations |
|
|
124 | (2) |
|
How to work with nullable value types and the null-coalescing operators |
|
|
126 | (2) |
|
How to work with nullable reference types |
|
|
128 | (2) |
|
Two versions of the Invoice Total app |
|
|
130 | (1) |
|
The basic Invoice Total app |
|
|
130 | (2) |
|
The enhanced Invoice Total app |
|
|
132 | (2) |
|
|
134 | (4) |
|
Chapter 5 How to code control structures |
|
|
|
How to code Boolean expressions |
|
|
138 | (1) |
|
How to use the relational operators |
|
|
138 | (2) |
|
How to use the logical operators |
|
|
140 | (2) |
|
How to code conditional statements and expressions |
|
|
142 | (1) |
|
How to code if-else statements |
|
|
142 | (2) |
|
How to code switch statements |
|
|
144 | (2) |
|
How to code switch expressions |
|
|
146 | (2) |
|
How to use pattern matching |
|
|
148 | (2) |
|
How to use the conditional operator |
|
|
150 | (2) |
|
An enhanced version of the Invoice Total app |
|
|
152 | (2) |
|
|
154 | (1) |
|
How to code while and do-while loops |
|
|
154 | (2) |
|
|
156 | (2) |
|
Loops that use break and continue statements |
|
|
158 | (2) |
|
Debugging techniques for programs with loops |
|
|
160 | (2) |
|
|
162 | (1) |
|
The design and property settings for the form |
|
|
162 | (2) |
|
|
164 | (2) |
|
|
166 | (4) |
|
Chapter 6 How to code methods and event handlers |
|
|
|
How to code and call methods |
|
|
170 | (1) |
|
|
170 | (2) |
|
|
172 | (2) |
|
How to use optional parameters |
|
|
174 | (1) |
|
How to use named arguments |
|
|
174 | (2) |
|
How to code expression-bodied methods |
|
|
176 | (2) |
|
How to use refactoring to create a new method and its calling statement |
|
|
178 | (2) |
|
When and how to pass arguments by reference and by value |
|
|
180 | (4) |
|
|
184 | (1) |
|
How to create tuples and refer to their members |
|
|
184 | (2) |
|
How to use a tuple as the return type for a method |
|
|
186 | (2) |
|
How to work with events and delegates |
|
|
188 | (1) |
|
How to generate an event handler for any event |
|
|
188 | (2) |
|
|
190 | (2) |
|
How to handle multiple events with one event handler |
|
|
192 | (2) |
|
Another version of the Future Value app |
|
|
194 | (1) |
|
The event handlers and the Calculate Future Value () method |
|
|
194 | (2) |
|
Some of the generated code |
|
|
196 | (2) |
|
|
198 | (4) |
|
Chapter 7 How to handle exceptions and validate data |
|
|
|
An introduction to exceptions |
|
|
202 | (1) |
|
|
202 | (2) |
|
|
204 | (2) |
|
How to use structured exception handling |
|
|
206 | (1) |
|
How to catch an exception |
|
|
206 | (2) |
|
How to use the properties and methods of an exception |
|
|
208 | (2) |
|
How to catch specific types of exceptions |
|
|
210 | (2) |
|
How to throw an exception |
|
|
212 | (2) |
|
The Future Value app with exception handling |
|
|
214 | (2) |
|
|
216 | (1) |
|
How to validate a single entry |
|
|
216 | (2) |
|
How to code generic methods for data validation |
|
|
218 | (2) |
|
How to validate multiple entries |
|
|
220 | (2) |
|
The Future Value app with data validation |
|
|
222 | (1) |
|
|
222 | (1) |
|
|
222 | (4) |
|
|
226 | (4) |
|
Chapter 8 How to use arrays and collections |
|
|
|
How to work with one-dimensional arrays |
|
|
230 | (1) |
|
|
230 | (2) |
|
How to assign values to the elements of an array |
|
|
232 | (2) |
|
|
234 | (2) |
|
How to use foreach loops to work with arrays |
|
|
236 | (2) |
|
How to work with rectangular arrays |
|
|
238 | (1) |
|
How to create a rectangular array |
|
|
238 | (1) |
|
How to assign values to a rectangular array |
|
|
238 | (2) |
|
How to work with rectangular arrays |
|
|
240 | (2) |
|
More skills for working with arrays |
|
|
242 | (1) |
|
How to use the Array class |
|
|
242 | (2) |
|
How to refer to and copy arrays |
|
|
244 | (2) |
|
How to code methods that work with arrays |
|
|
246 | (2) |
|
How to use the null-conditional operator |
|
|
248 | (2) |
|
More ways to refer to array elements |
|
|
250 | (2) |
|
How to work with list patterns |
|
|
252 | (2) |
|
How to work with collections |
|
|
254 | (1) |
|
Commonly used collection classes |
|
|
254 | (2) |
|
Typed vs. untyped collections |
|
|
256 | (2) |
|
|
258 | (4) |
|
How to work with a sorted list |
|
|
262 | (4) |
|
How to work with queues and stacks |
|
|
266 | (2) |
|
How to work with an array list |
|
|
268 | (2) |
|
|
270 | (4) |
|
Chapter 9 How to work with dates and strings |
|
|
|
How to work with dates and times |
|
|
274 | (1) |
|
How to create a DateTime value |
|
|
274 | (2) |
|
How to get the current date and time |
|
|
276 | (1) |
|
How to format DateTime values |
|
|
276 | (2) |
|
How to get information about dates and times |
|
|
278 | (2) |
|
How to perform operations on dates and times |
|
|
280 | (2) |
|
|
282 | (1) |
|
The members of the String class |
|
|
282 | (2) |
|
Code examples that work with strings |
|
|
284 | (2) |
|
More code examples that work with strings |
|
|
286 | (2) |
|
How to use interpolated strings for join operations |
|
|
288 | (2) |
|
How to use the Parse() and TryParse() methods to validate numeric entries |
|
|
290 | (2) |
|
How to use the StringBuilder class |
|
|
292 | (2) |
|
How to format numbers, dates, and times |
|
|
294 | (1) |
|
|
294 | (2) |
|
How to format dates and times |
|
|
296 | (2) |
|
How to use interpolated strings for formatting |
|
|
298 | (2) |
|
|
300 | (4) |
|
Chapter 10 More skills for working with Windows forms and controls |
|
|
|
How to work with controls |
|
|
304 | (1) |
|
Five more types of controls |
|
|
304 | (2) |
|
How to work with combo boxes and list boxes |
|
|
306 | (4) |
|
How to work with check boxes and radio buttons |
|
|
310 | (1) |
|
How to work with group boxes |
|
|
310 | (2) |
|
How to use Tab Order view to set the tab order |
|
|
312 | (2) |
|
How to get the information you need for using a control |
|
|
314 | (2) |
|
How to work with multi-form projects |
|
|
316 | (1) |
|
How to add a form to a project |
|
|
316 | (2) |
|
The code that's generated for a new form |
|
|
318 | (2) |
|
How to work with global using directives |
|
|
320 | (2) |
|
|
322 | (2) |
|
How to display the first form of an app |
|
|
324 | (2) |
|
How to display a form as a dialog |
|
|
326 | (2) |
|
How to pass data between a form and a custom dialog |
|
|
328 | (2) |
|
How to use the MessageBox class |
|
|
330 | (1) |
|
How to display a dialog and get the user response |
|
|
330 | (2) |
|
How to use the FormClosing event |
|
|
332 | (2) |
|
|
334 | (1) |
|
|
334 | (2) |
|
|
336 | (1) |
|
The code for the Customer form |
|
|
336 | (4) |
|
The code for the Payment form |
|
|
340 | (4) |
|
|
344 | (4) |
|
Chapter 11 How to debug an app |
|
|
|
Basic debugging techniques |
|
|
348 | (1) |
|
How to work in break mode |
|
|
348 | (1) |
|
How to work with data tips |
|
|
348 | (2) |
|
How to use the Hot Reload feature |
|
|
350 | (2) |
|
|
352 | (2) |
|
How to control the execution of an app |
|
|
354 | (2) |
|
How to use the debugging windows |
|
|
356 | (1) |
|
How to use the Locals window to monitor variables |
|
|
356 | (1) |
|
How to use the Autos window to monitor variables |
|
|
356 | (2) |
|
How to use Watch windows to monitor expressions |
|
|
358 | (2) |
|
How to use the Immediate window to execute commands |
|
|
360 | (2) |
|
How to use the Output window to view project information |
|
|
362 | (2) |
|
How to write data to the Output window |
|
|
364 | (2) |
|
How to use the Visualizer to view strings and collections |
|
|
366 | (2) |
|
|
368 | (6) |
|
Section 3 Object-oriented programming |
|
|
|
Chapter 12 How to create and use classes |
|
|
|
An introduction to classes |
|
|
374 | (1) |
|
How classes can be used to structure an app |
|
|
374 | (2) |
|
|
376 | (2) |
|
How to create objects from a class |
|
|
378 | (2) |
|
Basic skills for creating a class |
|
|
380 | (1) |
|
How to add a class file to a project |
|
|
380 | (2) |
|
|
382 | (2) |
|
|
384 | (2) |
|
|
386 | (2) |
|
How to code static members |
|
|
388 | (2) |
|
The Product Maintenance app |
|
|
390 | (1) |
|
The operation of the Product Maintenance app |
|
|
390 | (2) |
|
The classes used by the Product Maintenance app |
|
|
392 | (2) |
|
The code for the Product Maintenance app |
|
|
394 | (4) |
|
More skills for creating and using classes |
|
|
398 | (1) |
|
How to code properties with fields |
|
|
398 | (2) |
|
How to code overloaded methods and constructors |
|
|
400 | (2) |
|
How to code required properties |
|
|
402 | (2) |
|
How to use property patterns |
|
|
404 | (4) |
|
How to create and use structures, records, and record structs |
|
|
408 | (1) |
|
How to create a structure |
|
|
408 | (2) |
|
|
410 | (2) |
|
How to create and use a record |
|
|
412 | (2) |
|
How to create and use a record struct |
|
|
414 | (1) |
|
When to use classes, structures, records, and record structs |
|
|
414 | (2) |
|
The Product Maintenance app updated to use a record |
|
|
416 | (2) |
|
|
418 | (4) |
|
Chapter 13 How to work with indexers, delegates, events, and operators |
|
|
|
An introduction to the ProductList class |
|
|
422 | (1) |
|
The code for a simple ProductList class |
|
|
422 | (2) |
|
The specifications for the enhanced ProductList class |
|
|
424 | (2) |
|
How to work with indexers |
|
|
426 | (1) |
|
|
426 | (2) |
|
How to code expression-bodied indexers and accessors |
|
|
428 | (2) |
|
How to throw an argument exception |
|
|
430 | (2) |
|
How to work with delegates and events |
|
|
432 | (1) |
|
How to define and use a delegate |
|
|
432 | (2) |
|
How to define and use events |
|
|
434 | (2) |
|
How to use anonymous methods and lambda expressions with delegates and events |
|
|
436 | (2) |
|
How to overload operators |
|
|
438 | (1) |
|
An introduction to operator overloading |
|
|
438 | (2) |
|
How to overload arithmetic operators |
|
|
440 | (2) |
|
How to overload relational operators |
|
|
442 | (2) |
|
An enhanced version of the Product Maintenance application |
|
|
444 | (1) |
|
The code for the ProductList class |
|
|
444 | (4) |
|
The code for the Product Maintenance form |
|
|
448 | (2) |
|
|
450 | (4) |
|
Chapter 14 How to work with inheritance |
|
|
|
An introduction to inheritance |
|
|
454 | (1) |
|
|
454 | (2) |
|
|
456 | (2) |
|
Methods inherited from the System.Object class |
|
|
458 | (2) |
|
How to use inheritance in your apps |
|
|
460 | (2) |
|
Basic skills for working with inheritance |
|
|
462 | (1) |
|
How to create a base class |
|
|
462 | (2) |
|
|
464 | (2) |
|
|
466 | (2) |
|
An inheritance version of the Product Maintenance app |
|
|
468 | (1) |
|
The operation of the Product Maintenance app |
|
|
468 | (2) |
|
The code for the Product, Book, and Software classes |
|
|
470 | (2) |
|
The code for the ProductList class |
|
|
472 | (2) |
|
The code for the Product Maintenance form |
|
|
474 | (2) |
|
The code for the New Product form |
|
|
476 | (2) |
|
|
478 | (1) |
|
How to use the Type class to get information about an object's type |
|
|
478 | (2) |
|
How to use casting with inheritance |
|
|
480 | (2) |
|
How to work with abstract and sealed classes |
|
|
482 | (1) |
|
How to work with abstract classes |
|
|
482 | (2) |
|
How to work with sealed classes |
|
|
484 | (2) |
|
|
486 | (4) |
|
Chapter 15 How to work with interfaces and generics |
|
|
|
How to work with interfaces |
|
|
490 | (1) |
|
An introduction to interfaces |
|
|
490 | (2) |
|
Some of the interfaces denned by NET |
|
|
492 | (2) |
|
How to create an interface |
|
|
494 | (2) |
|
How to work with default methods |
|
|
496 | (1) |
|
How to work with static methods and fields |
|
|
496 | (2) |
|
How to implement an interface |
|
|
498 | (2) |
|
A Product class that implements the ICloneable interface |
|
|
500 | (2) |
|
How to use an interface as a parameter |
|
|
502 | (2) |
|
How to work with generics |
|
|
504 | (1) |
|
How to code a class that defines a generic collection |
|
|
504 | (4) |
|
Some of the generic interfaces defined by .NET |
|
|
508 | (2) |
|
How to implement the I Comparable<T> interface |
|
|
510 | (2) |
|
|
512 | (2) |
|
How to implement the IEnumerable<T> interface |
|
|
514 | (2) |
|
How to code an interface that uses generics |
|
|
516 | (2) |
|
|
518 | (4) |
|
Chapter 16 How to organize, document, and test your classes |
|
|
|
How to organize your classes |
|
|
522 | (1) |
|
How to code multiple classes in a single file |
|
|
522 | (2) |
|
How to split a single class across multiple files |
|
|
524 | (2) |
|
How to work with namespaces |
|
|
526 | (2) |
|
How to work with file scoped namespaces |
|
|
528 | (2) |
|
How to document your classes |
|
|
530 | (1) |
|
How to add XML documentation to a class |
|
|
530 | (2) |
|
How to view the XML documentation |
|
|
532 | (2) |
|
How to create and use class libraries |
|
|
534 | (1) |
|
|
534 | (2) |
|
How to create a class library project |
|
|
536 | (2) |
|
How to add a reference to a class library |
|
|
538 | (1) |
|
How to use the classes in a class library |
|
|
538 | (2) |
|
How to implement unit testing |
|
|
540 | (1) |
|
|
540 | (2) |
|
How to create a unit test project |
|
|
542 | (2) |
|
|
544 | (2) |
|
|
546 | (2) |
|
|
548 | (6) |
|
Section 4 Basic skills for working with data |
|
|
|
Chapter 17 How to work with file I/O |
|
|
|
An introduction to the System.IO classes |
|
|
554 | (1) |
|
The classes for managing directories, files, and paths |
|
|
554 | (2) |
|
How files and streams work |
|
|
556 | (2) |
|
How to use the FileStream class |
|
|
558 | (2) |
|
How to use the exception classes for file I/O |
|
|
560 | (2) |
|
How to work with text files |
|
|
562 | (1) |
|
|
562 | (2) |
|
|
564 | (2) |
|
How to use the using statement and the using declaration |
|
|
566 | (2) |
|
A class that works with a text file |
|
|
568 | (2) |
|
How to work with binary files |
|
|
570 | (1) |
|
How to write a binary file |
|
|
570 | (2) |
|
How to read a binary file |
|
|
572 | (2) |
|
A class that works with a binary file |
|
|
574 | (2) |
|
|
576 | (2) |
|
Chapter 18 How to use LINQ |
|
|
|
Basic concepts for working with LINQ |
|
|
578 | (1) |
|
|
578 | (1) |
|
|
578 | (2) |
|
The three stages of a query operation |
|
|
580 | (2) |
|
How to code query expressions |
|
|
582 | (1) |
|
How to identify the data source for a query |
|
|
582 | (2) |
|
How to filter the results of a query |
|
|
584 | (2) |
|
How to sort the results of a query |
|
|
586 | (2) |
|
How to select fields from a query |
|
|
588 | (2) |
|
How to join data from two or more data sources |
|
|
590 | (2) |
|
How to code method-based queries |
|
|
592 | (1) |
|
How to use the LINQ methods for query operations |
|
|
592 | (2) |
|
How to use additional LINQ methods |
|
|
594 | (2) |
|
A Customer Invoice application that uses generic lists |
|
|
596 | (1) |
|
|
596 | (2) |
|
|
598 | (2) |
|
|
600 | (6) |
|
Section 5 Database programming |
|
|
|
Chapter 19 An introduction to database programming |
|
|
|
An introduction to client/server systems |
|
|
606 | (1) |
|
The hardware components of a client/server system |
|
|
606 | (2) |
|
The software components of a client/server system |
|
|
608 | (2) |
|
An introduction to relational databases |
|
|
610 | (1) |
|
|
610 | (2) |
|
How the tables in a database are related |
|
|
612 | (2) |
|
How the columns in a table are defined |
|
|
614 | (2) |
|
The design of the MM ABooks database |
|
|
616 | (2) |
|
How to use SQL to work with a relational database |
|
|
618 | (1) |
|
How to query a single table |
|
|
618 | (2) |
|
How to join data from two or more tables |
|
|
620 | (2) |
|
How to add, update, and delete data in a table |
|
|
622 | (2) |
|
|
624 | (2) |
|
Chapter 20 How to use Entity Framework Core |
|
|
|
How to create a data model |
|
|
626 | (1) |
|
How Entity Framework Core works |
|
|
626 | (2) |
|
How to add EF Core to your project |
|
|
628 | (2) |
|
How to generate DB context and entity classes |
|
|
630 | (2) |
|
The data model for the MMA Books database |
|
|
632 | (2) |
|
The code for the DB context class |
|
|
634 | (4) |
|
The code for the Customer entity class |
|
|
638 | (2) |
|
How to modify the generated code |
|
|
640 | (2) |
|
How to use LINQ with EF Core |
|
|
642 | (1) |
|
|
642 | (2) |
|
How to load related objects |
|
|
644 | (2) |
|
How to use EF Core to modify a database |
|
|
646 | (1) |
|
How to insert, update, and delete data |
|
|
646 | (2) |
|
How to handle database exceptions |
|
|
648 | (2) |
|
How concurrency affects insert, update, and delete operations |
|
|
650 | (2) |
|
How to check for concurrency conflicts |
|
|
652 | (2) |
|
How to handle concurrency exceptions |
|
|
654 | (2) |
|
|
656 | (1) |
|
How to bind controls to a collection |
|
|
656 | (1) |
|
How to bind controls to the results of a query |
|
|
656 | (2) |
|
How to code a data access class |
|
|
658 | (1) |
|
A simple data access class's |
|
|
658 | (2) |
|
A data access class that handles exceptions |
|
|
660 | (4) |
|
The Customer Maintenance app |
|
|
664 | (1) |
|
|
664 | (2) |
|
The code for the Customer Maintenance form |
|
|
666 | (6) |
|
The code for the Add/Modify Customer form |
|
|
672 | (4) |
|
|
676 | (6) |
|
Chapter 21 How to use ADO.NET to write your own data access code |
|
|
|
An introduction to ADO.NET |
|
|
682 | (1) |
|
The NET data provider for SQL Server |
|
|
682 | (1) |
|
How the connection, command, and data reader objects work |
|
|
682 | (2) |
|
How to work with connections and commands |
|
|
684 | (1) |
|
How to create and work with connections |
|
|
684 | (2) |
|
How to create and work with commands |
|
|
686 | (2) |
|
How to work with parameters |
|
|
688 | (1) |
|
How to use parameters in SQL statements |
|
|
688 | (2) |
|
How to create and work with the parameters for a command |
|
|
690 | (2) |
|
|
692 | (1) |
|
How to create and work with a data reader |
|
|
692 | (2) |
|
How to execute queries that return a single value |
|
|
694 | (1) |
|
How to execute action queries |
|
|
694 | (2) |
|
The Customer Maintenance app |
|
|
696 | (1) |
|
|
696 | (2) |
|
The code for the data access class |
|
|
698 | (8) |
|
|
706 | (4) |
|
Chapter 22 How to use the DataGridView control |
|
|
|
How to display data in a DataGridView control |
|
|
710 | (1) |
|
An introduction to the DataGridView control |
|
|
710 | (2) |
|
How to set the functions provided by a DataGridView control |
|
|
712 | (2) |
|
How to bind to a data source |
|
|
714 | (2) |
|
How to code a method in a data access class that gets selected columns |
|
|
716 | (2) |
|
How to format the columns |
|
|
718 | (2) |
|
How to format the headers and alternating rows |
|
|
720 | (2) |
|
How to work with columns and events |
|
|
722 | (1) |
|
How to add and remove columns |
|
|
722 | (2) |
|
How to work with the object that's passed to an event handler |
|
|
724 | (2) |
|
A Product Maintenance app |
|
|
726 | (1) |
|
|
726 | (2) |
|
The code for the Product Maintenance form |
|
|
728 | (4) |
|
How to provide paging for a DataGridView control |
|
|
732 | (1) |
|
The user interface for a form that provides for paging |
|
|
732 | (2) |
|
The code that implements the paging |
|
|
734 | (4) |
|
How to create a Master/Detail form |
|
|
738 | (1) |
|
The user interface for a Master/Detail form |
|
|
738 | (2) |
|
The code for the DTOs, data access class, and form |
|
|
740 | (2) |
|
|
742 | (6) |
|
Appendix A How to set up Windows for this book |
|
|
|
How to install the files for this book |
|
|
748 | (2) |
|
How to install Visual Studio |
|
|
750 | (2) |
|
How to set up your system to use the database |
|
|
752 | |