ebook img

Pro .NET 2.0 Windows Forms and Custom Controls in VB 2005 PDF

1077 Pages·2006·33.96 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 Pro .NET 2.0 Windows Forms and Custom Controls in VB 2005

CYAN YELLOW MAGENTA BLACK PANTONE 123 CV BOOKS FOR PROFESSIONALS BY PROFESSIONALS® THE EXPERT’S VOICE® IN.NET Companion eBook Available Pro .NET 2.0 Windows Forms Pro and Custom Controls in VB 2005 a . Dear Reader, n N Pro When the .NET Framework first appeared, many assumed it would usher in a d new world of web-only programming. Today, four years after the initial release E of .NET 1.0, Windows applications refuse to die—in fact, they’re thriving. C Author of With .NET 2.0, Microsoft has rediscovered Windows applications. You’ll uT .NET 2.0 Windows find long-requested features, like a flexible web-like layout model, the ability User Interfaces in VB .NET (Apress) to display HTML pages, and support for Windows XP visual styles. Entirely s 2 new controls fill major gaps, like the modern ToolStrip and the high-powered User Interfaces in C# t DataGridView. There’s even a whole new deployment system, called ClickOnce, (Apress) o. that offers streamlined installations from a web page and automatic updates. In The Book of VB 2005 0 Forms Custom short, .NET 2.0 has everything you need to build modern Windows applications. m Microsoft .NET Distributed In this book, you’ll explore the Windows Forms toolkit in detail and learn and Applications how to create everything from a vector-drawing program to a document-view W Microsoft Visual Basic .NET framework. Best of all, you’ll learn how to take your applications to the next C Programmer’s Cookbook step by extendingthe .NET Framework. For example, you’ll learn how to design Controls VB 2005 Pro .NET 2.0 Windows over a dozen custom controls that handle everything from Wizard systems to oi Forms and Custom Controls skinned buttons. And when you discover some of the real limitations that still n in n in C# exist in .NET—like its meager sound support—you’ll find out how you can solve the problem with other components. td If you’re looking for the most thorough book about Windows Forms user r interfaces, welcome aboard! oo Matthew MacDonald (Microsoft MVP in Client Development, MCSD) lw Join online discussions: s forums.apress.com FOR PROFESSIONALS i s BY PROFESSIONALS™ n THE APRESS ROADMAP Create modern user interfaces for Windows applications. Pro VB 2005 and the Companion eBook .NET 2.0 Platform VF B An Introduction to Pro .NET 2.0 Windows o Visual Basic .NET Object-Oriented Programming Forms And Custom Controls Class Design Handbook with Visual Basic .NET In VB 2005 r 2 See last page for details Data Entry and Validation m on $10 eBook version with C# and VB.NET 0 Windows Forms 0 s 5 Matthew MacDonald ISBN 1-59059-694-3 SOURCECODEONLINE 54999 www.apress.com Foreword by Shawn Burke MacDonald Development Manager,Windows Forms Team,Microsoft Corporation US $49.99 Shelve in Programming/ Microsoft/.NET 6 89253 59694 4 9 781590 596944 User level: Intermediate–Advanced this print for content only—size & color not accurate spine = 1.851" 1,800 page count Macdonald_694-3FRONT.fm Page i Friday, July 28, 2006 6:48 AM Pro .NET 2.0 Windows Forms and Custom Controls in VB 2005 ■ ■ ■ Matthew MacDonald Macdonald_694-3FRONT.fm Page ii Friday, July 28, 2006 6:48 AM Pro .NET 2.0 Windows Forms and Custom Controls in VB 2005 Copyright © 2006 by Matthew MacDonald 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-13 (pbk): 978-1-59059-694-4 ISBN-10 (pbk): 1-59059-694-3 Printed and bound in the United States of America 9 8 7 6 5 4 3 2 1 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. Lead Editor: Jonathan Gennick Technical Reviewer: Manish Jayaswal Editorial Board: Steve Anglin, Ewan Buckingham, Gary Cornell, Jason Gilmore, Jonathan Gennick, Jonathan Hassell, James Huddleston, Chris Mills, Matthew Moodie, Dominic Shakeshaft, Jim Sumser, Keir Thomas, Matt Wade Project Manager: Elizabeth Seymour Copy Edit Manager: Nicole LeClerc Copy Editor: Heather Lang Assistant Production Director: Kari Brooks-Copony Senior Production Editor: Laura Cheu Compositor: Susan Glinert Stevens Proofreader: Liz Berry Indexer: Michael Brinkman Artist: April Milne Cover Designer: Kurt Krames Manufacturing Director: Tom Debolski 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. Macdonald_694-3FRONT.fm Page iii Friday, July 28, 2006 6:48 AM For Hamid and Razia Macdonald_694-3FRONT.fm Page iv Friday, July 28, 2006 6:48 AM Macdonald_694-3FRONT.fm Page v Friday, July 28, 2006 6:48 AM Contents at a Glance Foreword . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxv About the Author . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxvii About the Technical Reviewer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xxix Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xxxi Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxxiii PART 1 Windows Forms Fundamentals ■ ■ ■ ■ CHAPTER 1 User Interface Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 ■ CHAPTER 2 Control Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 ■ CHAPTER 3 Forms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 ■ CHAPTER 4 The Classic Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 ■ CHAPTER 5 Images and Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 ■ CHAPTER 6 Lists and Trees . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 ■ CHAPTER 7 Drawing with GDI+ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 ■ CHAPTER 8 Data Binding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263 PART 2 Custom Controls ■ ■ ■ ■ CHAPTER 9 Custom Control Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321 ■ CHAPTER 10 User Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337 ■ CHAPTER 11 Derived Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365 ■ CHAPTER 12 Owner-Drawn Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389 ■ CHAPTER 13 Design-Time Support for Custom Controls . . . . . . . . . . . . . . . . . . . . 425 v Macdonald_694-3FRONT.fm Page vi Friday, July 28, 2006 6:48 AM PART 3 Modern Controls ■ ■ ■ ■ CHAPTER 14 Tool, Menu, and Status Strips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477 ■ CHAPTER 15 The DataGridView . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 ■ CHAPTER 16 Sound and Video . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577 ■ CHAPTER 17 The WebBrowser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589 PART 4 Windows Forms Techniques ■ ■ ■ ■ CHAPTER 18 Validation and Masked Editing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 611 ■ CHAPTER 19 Multiple and Single Document Interfaces . . . . . . . . . . . . . . . . . . . . 651 ■ CHAPTER 20 Multithreading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 689 ■ CHAPTER 21 Dynamic Interfaces and Layout Engines . . . . . . . . . . . . . . . . . . . . . . 729 ■ CHAPTER 22 Help Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 777 PART 5 Advanced Custom Controls ■ ■ ■ ■ CHAPTER 23 Skinned Forms and Animated Buttons . . . . . . . . . . . . . . . . . . . . . . . 811 ■ CHAPTER 24 Dynamic Drawing with a Design Surface . . . . . . . . . . . . . . . . . . . . . 839 ■ CHAPTER 25 Custom Extender Providers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 871 ■ CHAPTER 26 Advanced Design-Time Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 885 ■ APPENDIX A Creating Usable Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 927 ■ APPENDIX B ClickOnce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 943 ■ INDEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 963 vi Macdonald_694-3FRONT.fm Page vii Friday, July 28, 2006 6:48 AM Contents Foreword . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxv About the Author . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxvii About the Technical Reviewer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xxix Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xxxi Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxxiii PART 1 Windows Forms Fundamentals ■ ■ ■ ■ CHAPTER 1 User Interface Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Classes and Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 The Roles of Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Classes and Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 User Interface Classes in .NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Controls Are Classes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Controls Can Contain Other Controls . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Controls Can Extend Other Controls. . . . . . . . . . . . . . . . . . . . . . . . . . 12 Inheritance and the Form Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Accessing Controls. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Interacting with a Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Overriding Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 The View-Mediator Pattern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Smart Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Smart Forms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Visual Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Generating User-Interface Code in Visual Studio . . . . . . . . . . . . . . . 24 The Component Tray . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 The Hidden Designer Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 The Application Framework. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 Designing Windows Forms Applications . . . . . . . . . . . . . . . . . . . . . . . . . . 34 Encapsulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 Developing in Tiers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 The Last Word . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 vii Macdonald_694-3FRONT.fm Page viii Friday, July 28, 2006 6:48 AM viii ■ CONTENTS ■ CHAPTER 2 Control Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 The Windows Forms Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 The .NET Solution. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 The Control Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 Control Relations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Windows XP Styles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Position and Size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 Overlapping Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 Color . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 Alpha Blending . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 Fonts and Text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 System Fonts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 Large Fonts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 Access Keys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 Focus and the Tab Sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 Responding to the Mouse and Keyboard . . . . . . . . . . . . . . . . . . . . . . . . . . 61 Handling the Keyboard. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 Handling the Mouse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 A Mouse/Keyboard Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 Mouse Cursors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 Low-Level Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 The Last Word . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 ■ CHAPTER 3 Forms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 The Form Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 Form Size and Position. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 Scrollable Forms. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 Showing a Form . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 Custom Dialog Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 Form Interaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 Form Ownership. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 Prebuilt Dialogs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 Resizable Forms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 The Problem of Size. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 Minimum and Maximum Form Size . . . . . . . . . . . . . . . . . . . . . . . . . . 95 Anchoring. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 Docking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 Autosizing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 Macdonald_694-3FRONT.fm Page ix Friday, July 28, 2006 6:48 AM ■ CONTENTS ix Splitting Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 Building Split Windows with Panels . . . . . . . . . . . . . . . . . . . . . . . . . 105 Other Split Windows. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 The Last Word . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 ■ CHAPTER 4 The Classic Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 The Classic Control Gallery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 Labels. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 LinkLabel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 Button. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 TextBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 RichTextBox. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 CheckBox and RadioButton. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 PictureBox. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 List Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 Other Domain Controls. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 The Date Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 The DateTimePicker. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 MonthCalendar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 Container Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 The TabControl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 AutoComplete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 Drag-and-Drop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 “Fake” Drag-and-Drop. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 Authentic Drag-and-Drop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 Extender Providers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 The NotifyIcon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 ActiveX Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 Should You Import ActiveX Controls?. . . . . . . . . . . . . . . . . . . . . . . . 148 The Last Word . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 ■ CHAPTER 5 Images and Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 The Image Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 Common Controls and Images . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 The ImageList . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 Adding a Type-Safe Resource. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 How Type-Safe Resources Work. . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 Form Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 Creating Additional Resource Files. . . . . . . . . . . . . . . . . . . . . . . . . . 165

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.