ebook img

Practical Mono (Expert's Voice in Open Source) PDF

425 Pages·2005·14.41 MB·English
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Practical Mono (Expert's Voice in Open Source)

Mamone_5483Front.fm Page i Tuesday, October 25, 2005 5:40 AM Practical Mono ■ ■ ■ Mark Mamone Mamone_5483Front.fm Page ii Tuesday, October 25, 2005 5:40 AM Practical Mono Copyright © 2006 by Mark Mamone All rights reserved. No part of this work may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording, or by any information storage or retrieval system, without the prior written permission of the copyright owner and the publisher. ISBN (pbk): 1-59059-548-3 Printed and bound in the United States of America 9 8 7 6 5 4 3 2 1 Lead Editor: Jason Gilmore Technical Reviewer: Marcus Fletcher Editorial Board: Steve Anglin, Dan Appleman, Ewan Buckingham, Gary Cornell, Tony Davis, Jason Gilmore, Jonathan Hassell, Chris Mills, Dominic Shakeshaft, Jim Sumser Project Manager: Pat Christenson Copy Edit Manager: Nicole LeClerc Copy Editors: Kim Wimpsett, Ami Knox Assistant Production Director: Kari Brooks-Copony Compositor: Susan Glinert Proofreaders: Lori Bring, Kim Burton, Linda Seifert, Dan Shaw, Nancy Sixsmith Production Editing Assistant: Kelly Gunther Indexer: Ann Rogers Artist: Kinetic Publishing Services, LLC Cover Designer: Kurt Krames Manufacturing Director: Tom Debolski Trademarked names may appear in this book. Rather than use a trademark symbol with every occurrence of a trademarked name, we use the names only in an editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the trademark. Distributed to the book trade worldwide by Springer-Verlag New York, Inc., 233 Spring Street, 6th Floor, New York, NY 10013. Phone 1-800-SPRINGER, fax 201-348-4505, e-mail [email protected], or visit http://www.springeronline.com. For information on translations, please contact Apress directly at 2560 Ninth Street, Suite 219, Berkeley, CA 94710. Phone 510-549-5930, fax 510-549-5939, e-mail [email protected], or visit http://www.apress.com. The information in this book is distributed on an “as is” basis, without warranty. Although every precaution has been taken in the preparation of this work, neither the author(s) nor Apress shall have any liability to any person or entity with respect to any loss or damage caused or alleged to be caused directly or indirectly by the information contained in this work. The source code for this book is available to readers at http://www.apress.com in the Source Code section. Mamone_5483Front.fm Page iii Tuesday, October 25, 2005 5:40 AM Contents at a Glance About the Author . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv About the Technical Reviewer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xix ■ CHAPTER 1 Introducing .NET and Mono . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 ■ CHAPTER 2 Introducing Development Tools and MonoDevelop . . . . . . . . . . . . . 21 ■ CHAPTER 3 Introducing C# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 ■ CHAPTER 4 Learning C#: Beyond the Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 ■ CHAPTER 5 Exploring the .NET Core . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 ■ CHAPTER 6 Creating Windows Forms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 ■ CHAPTER 7 Introducing Gtk+, Glade, and User Interfaces . . . . . . . . . . . . . . . . . 179 ■ CHAPTER 8 Using ADO.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205 ■ CHAPTER 9 Using XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241 ■ CHAPTER 10 Introducing Networking and Remoting . . . . . . . . . . . . . . . . . . . . . . . 273 ■ CHAPTER 11 Using ASP.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307 ■ CHAPTER 12 Using Advanced Mono Techniques . . . . . . . . . . . . . . . . . . . . . . . . . . . 347 ■ INDEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377 iii Mamone_5483Front.fm Page iv Tuesday, October 25, 2005 5:40 AM Mamone_5483Front.fm Page v Tuesday, October 25, 2005 5:40 AM CCoonntteennttss About the Author . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv About the Technical Reviewer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xix ■ CHAPTER 1 Introducing .NET and Mono . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Microsoft Introduces .NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 What Is .NET? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 The .NET Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 .NET As an Open Industry Standard . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Technologies. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 .NET Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 The History of Mono . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 What Is Mono? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Core Mono. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Additional Mono Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 How to Get Involved with Mono . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 How to Obtain Mono . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 How to Install Mono on Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 How to Install Mono on Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 The Book’s Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Mono Support of .NET 2.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 ■ CHAPTER 2 Introducing Development Tools and MonoDevelop . . . . . . 21 What IDEs Are Available? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Introducing MonoDevelop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 The History of MonoDevelop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Downloading MonoDevelop. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Installing MonoDevelop on Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 v Mamone_5483Front.fm Page vi Tuesday, October 25, 2005 5:40 AM vi ■ CONTENTS Introducing the MonoDevelop Layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 The Menu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 The Toolbar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 The Main Source Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 The Solution Explorer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 Creating a Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 What’s a Solution Used For? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 Adding Project Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 Configuring Your Target Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 Building Your Target. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Testing Your Target . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Compiling Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 Executing Code. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 Examining the Execution Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 Debugging Your Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Using the Class Viewer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 Using Other Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 C# Compiler. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 Mono’s CLR Implementation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 Global Assembly Cache Utility. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 XML Documentor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 Outline Class Viewer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 CIL Image Content Dumper. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 Intermediate Language Assembler. . . . . . . . . . . . . . . . . . . . . . . . . . . 40 Certification Creation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 Certificate Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 ■ CHAPTER 3 Introducing C# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Exploring the Structure of a C# Program . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Introducing Variables and Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Introducing the Unified Type System . . . . . . . . . . . . . . . . . . . . . . . . . 43 Value Types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 Type Conversion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Reference Types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Enumerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Arrays. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 Mamone_5483Front.fm Page vii Tuesday, October 25, 2005 5:40 AM ■ CONTENTS vii Introducing Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 Conditional Flow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 Unconditional Flow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 Introducing Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 Methods. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 Properties and Attributes (or Fields). . . . . . . . . . . . . . . . . . . . . . . . . . 53 Introducing Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 Introducing Declarations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 Defining Scope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 Private . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 Public. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 Protected. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 Namespaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 Introducing Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 Primary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 Unary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 Multiplicative. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 Additive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 Shift . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 Relational. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 Equality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 Logical Bitwise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 Logical Boolean. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 Assignment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 ■ CHAPTER 4 Learning C#: Beyond the Basics . . . . . . . . . . . . . . . . . . . . . . . . . . 63 What’s Contained Within a Class or Struct? . . . . . . . . . . . . . . . . . . . . . . . 63 Instance Construction and Destruction . . . . . . . . . . . . . . . . . . . . . . . 64 Method Signatures. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 Constructors and Destructors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 Scope Using Visibility Modifiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 Attributes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 Operations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 Constants. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 Enumerated Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 Fields and Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 Overloaded Operators. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 Nested Types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 Mamone_5483Front.fm Page viii Tuesday, October 25, 2005 5:40 AM viii ■ CONTENTS Generalization, Specialization, and Initializers . . . . . . . . . . . . . . . . . 81 Dynamic Method Behavior Through Polymorphism . . . . . . . . . . . . . 83 Implementing and Using Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 Understanding Events and Delegates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 Handling Your Errors Through Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . 93 Catching Exceptions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 Throwing Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 Setting Scope Through Namespaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 Defining a Namespace. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 Using a Namespace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 What’s New in .NET 2.0? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 Partial Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 Generics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 Other Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 ■ CHAPTER 5 Exploring the .NET Core . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 Going Deeper into the Common Language Runtime (CLR) . . . . . . . . . . 107 Portable Executable (PE) File. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 Metadata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 Intermediate Language (IL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 Class Loader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 Verifier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 Just-In-Time (JIT) Compiler. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 CLR Core . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 Using Assemblies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 Introducing Modules. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 Creating an Assembly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 Finding an Assembly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 Introducing the Global Assembly Cache (GAC) . . . . . . . . . . . . . . . . . . . . 120 Adding Assemblies to the Cache. . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 Verifying the Contents of the Cache. . . . . . . . . . . . . . . . . . . . . . . . . 121 Removing Assemblies from the Cache. . . . . . . . . . . . . . . . . . . . . . . 122 Managing Memory with the Garbage Collector . . . . . . . . . . . . . . . . . . . . 122 Reference-Counted Objects. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 Generations of Objects. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 A Good Garbage-Collecting Citizen. . . . . . . . . . . . . . . . . . . . . . . . . . 125 Direct Control of the Garbage Collector . . . . . . . . . . . . . . . . . . . . . . 125 Mamone_5483Front.fm Page ix Tuesday, October 25, 2005 5:40 AM ■ CONTENTS ix Using Application Domains . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 Understanding Domain Sharing . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 Defining and Using Your Own Application Domain. . . . . . . . . . . . . 127 Using the Class Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 System. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 System.IO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 System.Collections. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 System.Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 System.Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 System.Net . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 System.XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 System.Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 System.Windows.Forms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 ■ CHAPTER 6 Creating Windows Forms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 Graphical User Interface (GUI) Overview . . . . . . . . . . . . . . . . . . . . . . . . . 133 Graphic Display Interface Plus (GDI+) . . . . . . . . . . . . . . . . . . . . . . . 134 Windows Forms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 Windows Forms vs. Web Forms . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 Implementing Good User Interface Design . . . . . . . . . . . . . . . . . . . . . . . 135 Creating the User Interface for the RSS Aggregator . . . . . . . . . . . . . . . . 136 Creating a Form . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 Modifying the Look of Your Form . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 Creating a Menu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 Handling Events from Your Controls. . . . . . . . . . . . . . . . . . . . . . . . . 148 Exploring Form Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 Multidocument Interfaces (MDIs) vs. Single-Document Interfaces (SDIs). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 Modal vs. Modeless . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 Creating a Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 Adding Functionality Through Controls . . . . . . . . . . . . . . . . . . . . . . 155 Setting the Owner and Location of Your Controls. . . . . . . . . . . . . . 157 Interacting with the Dialog Box. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 Using Windows.Forms Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 Label. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 TextBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 ListBox. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 DataGrid. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169

Description:
This is the poorest excuse for a programming book that I have purchased including many from Apress. It is very dated even if only a couple years old, does not reflect the current state of Mono. Commands are plain wrong. The author doesn't complete instructions and the sample scripts are incomplete.
See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.