| |
| |
Introduction | |
| |
| |
What's in This Book | |
| |
| |
Conventions Used in This Book | |
| |
| |
What You'll Need | |
| |
| |
Online Resources | |
| |
| |
| |
Setting Up Your Development Environment | |
| |
| |
Smart Device Extensions and the .NET Compact Framework | |
| |
| |
Targeting Nonstandard Devices | |
| |
| |
In Brief | |
| |
| |
| |
Introducing the .NET Compact Framework | |
| |
| |
Why the .NET Compact Framework? | |
| |
| |
Examining the .NET Compact Framework in Detail | |
| |
| |
In Brief | |
| |
| |
| |
Designing GUI Applications with Windows Forms | |
| |
| |
Investigating Unsupported Controls in the .NET Compact Framework | |
| |
| |
Investigating Unsupported System.Windows.Forms Functionality in the .NET Compact Framework | |
| |
| |
Working with the Visual Studio .NET Form Designer | |
| |
| |
Understanding the Different Windows Forms Target Platforms | |
| |
| |
Working with the Form Control | |
| |
| |
Programming the Button Control | |
| |
| |
Using the TextBox Control | |
| |
| |
Using the Label Control | |
| |
| |
Working with RadioButton Controls | |
| |
| |
Using the CheckBox Control | |
| |
| |
Using the ComboBox Control | |
| |
| |
Using the ListBox Control | |
| |
| |
Using the NumericUpDown Control | |
| |
| |
Using the DomainUpDown Control | |
| |
| |
Programming the ProgressBar Control | |
| |
| |
Using the StatusBar Control | |
| |
| |
Using the TrackBar Control | |
| |
| |
Using the ToolBar Control | |
| |
| |
Adding Menus with the MainMenu Control | |
| |
| |
Using a ContextMenu Control in an Application | |
| |
| |
Using the Timer Control | |
| |
| |
Using the OpenFileDialog and SaveFileDialog Controls | |
| |
| |
Using the Panel Control | |
| |
| |
Using the HScrollBar and VScrollBar Controls | |
| |
| |
Using the ImageList Control | |
| |
| |
Using the PictureBox Control | |
| |
| |
Using the ListView Control | |
| |
| |
Using the TabControl Control | |
| |
| |
Using the TreeView Control | |
| |
| |
Working with the DataGrid Control | |
| |
| |
In Brief | |
| |
| |
| |
Using Threads and Timers in the .NET Compact Framework | |
| |
| |
Threads, Timers, and Windows CE | |
| |
| |
The Thread Class | |
| |
| |
Understanding Thread Basics | |
| |
| |
Coordinating Threads with the Mutex Class | |
| |
| |
Blocking until a Thread Finishes | |
| |
| |
Controlling Access to Data Objects with the Monitor Class | |
| |
| |
Managing Multiple Threads with a Thread Pool | |
| |
| |
Timers | |
| |
| |
Updating Variables with the Interlocked Class | |
| |
| |
In Brief | |
| |
| |
| |
Network Connectivity with the .NET Compact Framework | |
| |
| |
Working with Sockets | |
| |
| |
Socket Programming with the .NET Compact Framework | |
| |
| |
Serializing Objects for Transmission through a Socket | |
| |
| |
Using UDP Packets | |
| |
| |
Multicasting with UDP Packets | |
| |
| |
Communicating with Remote Servers through the HTTP Protocol | |
| |
| |
Communicating with Remote Servers through the HTTPS Protocol | |
| |
| |
Communicating through the Device IrDA Port | |
| |
| |
In Brief | |
| |
| |
| |
ADO.NET on the .NET Compact Framework | |
| |
| |
Introducing ADO.NET on the .NET Compact Framework | |
| |
| |
Caching Data with the DataSet | |
| |
| |
Understanding Constraints | |
| |
| |
Setting Up Autoincremented Fields | |
| |
| |
Modeling Relational Data with the DataSet | |
| |
| |
Creating Bindable Views of Data with a DataView | |
| |
| |
Binding Data to a Control | |
| |
| |
Comparing the Compact DataSet with the Desktop DataSet | |
| |
| |
In Brief | |
| |
| |
| |
Programming with Microsoft SQL Server CE | |
| |
| |
Investigating the Features Supported by Microsoft SQL Server 2000 | |
| |
| |
Creating a Microsoft SQL Server CE Database | |
| |
| |
Adding Structure to a Microsoft SQL Server CE Database | |
| |
| |
Populating a Microsoft SQL Server CE Database | |
| |
| |
Retrieving Data by Using Sq1CeDataReader | |
| |
| |
Filling a DataSet by Using the Sq1CeDataAdapter | |
| |
| |
Updating the Microsoft SQL Server CE Database by Using the Sq1CeDataAdapter | |
| |
| |
Generating Sq1Command Objects with the Sq1CeCommandBuilder | |
| |
| |
In Brief | |
| |
| |
| |
XML and the DataSet | |
| |
| |
XML and the .NET Compact Framework DataSet | |
| |
| |
Loading XML into a DataSet | |
| |
| |
Saving a DataSet as XML | |
| |
| |
Loading and Saving XML in a Sample Application | |
| |
| |
Modeling Relational Data with XML Schemas | |
| |
| |
Loading and Saving Schema Alone | |
| |
| |
Writing a DataSet to XML without Schema Information | |
| |
| |
Reading a DataSet from XML, Ignoring Schema Information | |
| |
| |
Inferring Schema | |
| |
| |
Using XML to Design a DataSet | |
| |
| |
Saving and Loading DataSets as XML DiffGrams | |
| |
| |
In Brief | |
| |
| |
| |
Using XML Web Services | |
| |
| |
Creating a Simple XML Web Service | |
| |
| |
Understanding the .NET Framework Web Service Client | |
| |
| |
Creating a Client for the Simple XML Web Service | |
| |
| |
Consuming a Web Service That Uses a DataSet | |
| |
| |
Consuming Web Service That Exposes a Typed DataSet | |
| |
| |
In Brief | |
| |
| |
| |
Manipulating XML with the XmlTextReader and the XmlTextWriter | |
| |
| |
XML Architecture Overview | |
| |
| |
Working with the XmlTextReader | |
| |
| |
Loading XML Data into an XmlTextReader | |
| |
| |
Using the XmlTextReader's Namespaces Property | |
| |
| |
Understanding the Normalization Property | |
| |
| |
Controlling White-Space Interpretation with the WhitespaceHandling Property | |
| |
| |
Using the XmlResolver Property | |
| |
| |
Reading XML Nodes | |
| |
| |
Reading XML Attributes | |
| |
| |
Understanding How to Perform Full-Content Reads | |
| |
| |
Skipping over Nodes | |
| |
| |
Closing the XmlTextReader | |
| |
| |
Working with the XmlTextWriter | |
| |
| |
Creating the XmlTextWriter | |
| |
| |
Manipulating Namespace Support | |
| |
| |
Formatting the XmlTextWriter's Output | |
| |
| |
Writing an XML Declaration | |
| |
| |
Writing XML Elements | |
| |
| |
Writing XML Attributes | |
| |
| |
Writing xml:space and xml:lang Attributes | |
| |
| |
Writing Element and Attribute Content | |
| |
| |
Converting .NET Compact Framework Data Types through XmlConvert | |
| |
| |
Writing Raw XML Markup | |
| |
| |
Writing Other Nodes | |
| |
| |
Writing Processing Instructions | |
| |
| |
Writing White-Space Characters | |
| |
| |
In Brief | |
| |
| |
| |
Working with the XML Document Object Model | |
| |
| |
Processing XML by Using the Document Object Model | |
| |
| |
Differences from the Desktop .NET Framework | |
| |
| |
Loading the XML DOM | |
| |
| |
Navigating the XML DOM | |
| |
| |
Accessing Text from Elements | |
| |
| |
Accessing Markup from Nodes | |
| |
| |
Accessing an Element's Attributes | |
| |
| |
Accessing Other XmlNodes | |
| |
| |
Searching an XML Document Node Tree | |
| |
| |
Creating XmlNodes | |
| |
| |
Creating XmlDeclarations | |
| |
| |
Creating XmlElements | |
| |
| |
Creating XmlAttributes | |
| |
| |
Creating Other Node Types | |
| |
| |
Inserting XmlNodes | |
| |
| |
Using the AppendChild and PrependChild Methods | |
| |
| |
Working with the InsertBefore and InsertAfter Methods | |
| |
| |
Inserting XmlAttributes into an XmlDocument | |
| |
| |
Replacing the XmlNodes within an XmlDocument | |
| |
| |
Removing XmlNodes for an XmlDocument | |
| |
| |
Removing XmlAttributes from their XmlElements | |
| |
| |
Writing the XmlDocument | |
| |
| |
In Brief | |
| |
| |
| |
Interacting with Native Code | |
| |
| |
Understanding When to Call Native Code | |
| |
| |
Calling Native Code: Quick Start | |
| |
| |
Marshalling the Fundamental Data Types | |
| |
| |
Marshalling Simple Structures | |
| |
| |
Passing Nested Structures by Using Custom Marshalling Code | |
| |
| |
Calling the Windows CE Operating System | |
| |
| |
Accessing COM Components from the .NET Compact Framework | |
| |
| |
In Brief | |
| |
| |
| |
Exploring .NET Reflection | |
| |
| |
Understanding the .NET Compact Framework Reflection API | |
| |
| |
Loading .NET Assemblies | |
| |
| |
Discovering Type Information | |
| |
| |
Creating Type Instances by Using ConstructorInfo | |
| |
| |
Invoking Methods by Using the MethodInfo Class | |
| |
| |
Using Reflection to Manipulate Object State | |
| |
| |
Adding Custom Metadata to .NET Elements | |
| |
| |
In Brief | |
| |
| |
| |
Cryptography | |
| |
| |
Cryptography on the .NET Compact Framework | |
| |
| |
Invoking the CryptoAPI | |
| |
| |
Computing a Hash | |
| |
| |
Encrypting and Decrypting Data by Using a Password | |
| |
| |
Using Session Keys to Encrypt and Decrypt Data | |
| |
| |
Determining CryptoAPI Constants with the ConstFinder Sample Application | |
| |
| |
In Brief | |
| |
| |
| |
Measuring the Performance of a .NET Compact Framework Application | |
| |
| |
Using a Stopwatch Timer to Measure Code Execution Time | |
| |
| |
Using .NET Compact Framework Performance Counters | |
| |
| |
In Brief | |
| |
| |
| |
Deploying a .NET Application | |
| |
| |
Packaging a .NET Compact Framework Application | |
| |
| |
Using Visual Studio .NET to Package an Application | |
| |
| |
Using CAB Wizard to Package an Application | |
| |
| |
Distributing a .NET Compact Framework Application | |
| |
| |
In Brief | |
| |
| |
| |
Developing for the SmartPhone | |
| |
| |
Introducing the SmartPhone | |
| |
| |
Developing for the SmartPhone by Using the .NET Compact Framework | |
| |
| |
Writing an Application for SmartPhone--XMLDataSetViewer | |
| |
| |
In Brief | |
| |
| |
Index | |