This is the latest edition of a book that’s become a favorite of instructors in programs with a career-oriented curriculum...and of their students as well. Since it works for both introductory and advanced courses, some schools use it for a two- or three-course sequence.
You are currently on the Murach site for instructors. To buy this book, please visit our retail site.
If you haven’t tried Mike Murach’s style in software books, you’re in for a real treat! They have a style and format unique in the publishing world.... If you’re in the market for a book that will do the best job possible of helping you learn VB.NET, you can’t do better!"
The 3 chapters of section 1 provide a quick start in using Visual Studio to develop Windows Forms applications. In particular, these chapters focus on the skills for designing forms and entering code. These are essential skills your students need to get the most out of Visual Studio.
The 9 chapters of section 2 present a professional subset of Visual Basic that includes all of the core programming skills for developing business applications.
That includes the best techniques for handling exceptions, validating data, and debugging applications. And that includes a chapter on how to create and use business and database classes so your students’ applications will be object-oriented.
The 4 chapters of section 3 present the essential skills for developing applications that work with databases.
That includes using Visual Studio’s data sources feature to develop database applications quickly and easily. It also includes the basic skills for using ADO.NET code to work with databases.
In chapter 12 of section 2, students learn how to create and use business and database classes so they can develop object-oriented applications. Then, the 4 chapters in this section can be used to present a professional skill set for creating and using classes. Because some of these skills aren’t usually required of VB application programmers, you may want to be selective about which of these chapters or portions of chapters you assign.
The 4 chapters of section 5 present some additional skills for developing applications that work with data. That includes (1) skills for working with text, binary, and XML files; (2) the basic skills for using LINQ to query a data structure; and (3) an introduction to using the Entity Framework to work with database data through an Entity Data Model.
You can decide which of these chapters you want to include in your course. And you can assign them in the sequence that works best for you, as long as you cover LINQ before going on to the Entity Framework.
The 2 chapters in the last section of the book add some professional polish to your students’ VB skills. One shows how to enhance a user interface with features like menus and toolbars, while the other presents options for deploying applications.
Like the chapters in section 5, you can decide how much of this material to assign and in what sequence.
This is the latest edition of a book that’s become a favorite of instructors in programs with a career-oriented curriculum...and of their students as well. And it works for both introductory and advanced courses, so some schools use it for a two- or three-course sequence.
For introductory courses, this book differs from those like Bradley/Millspaugh or Zak because it gives your students a practical view of how Windows Forms applications are developed in the real world.
By the time your students complete chapter 7, for example, they will be able to develop bulletproof applications that do data validation and exception handling. And by the time they complete chapter 12, they’ll be able to develop object-oriented applications.
For advanced courses, you’re going to be hard-pressed to find a better book:
And because sections 3-6 are modular, you can teach the subjects in whatever sequence you prefer.
Like all our books, this one has features that you won’t find in competing books. That’s why we believe that your students will learn faster and better with our book than with any other. Here are just two of those features.
That’s a complaint we sometimes hear about our books, and we realize it may be an issue with a 900-page book!
Remember, though, that the modular structure of this book lets you assign just the content that you want for your course, whether it’s a beginning or advanced course. Remember too that all our books are priced fairly so students not only buy them, but keep them for use on the job later on. In fact, at $57.50, your students are likely to get their money back many times over in job opportunities and pay raises.
As one instructor put it: “The other comment I receive from my students is twofold: first, even if I cannot completely finish a Murach book in class, they know they can; and second, they find them a great, easy-to-use resource if they need to look up how to do a specific task at a later time.”
After your students complete the first 12 chapters of this book (sections 1 and 2), you can continue with any of the other sections. This works because these sections are written as independent modules that require only the first 12 chapters as a prerequisite. In addition, the chapters in sections 4, 5, and 6 are independent of each other, so they can be taught in any order. That’s what we mean by “modularity,” and that lets you create the course that’s right for your students.
The main points here are that (1) you don’t need to teach the chapters in sequence and (2) you get to decide the focus of your course. If, for example, you want to emphasize database programming, assign all of section 3. If you want to emphasize the complexities of object-oriented programming, assign all of section 4. And if you don’t have time for all of the chapters, you can assign selected chapters from sections 3, 4, 5, and 6....that can make a great introductory course.
Frankly, not much has changed when it comes to using Visual Basic and Visual Studio to develop Windows applications. That means that it will be easy to upgrade to this edition if you’ve been using a previous edition.
However, we have added material on Live Code Analysis, CodeLens, interpolated strings, the null-conditional operator, and multi-line string literals, all new in VS 2015. We’ve added material on extension methods and lambda expressions (both now covered in the LINQ chapter). We’ve added an introductory chapter on the Entity Framework. And we’ve dropped the chapter on developing Windows 8 apps.
To develop Windows Forms applications with Visual Basic 2015, you can have your students use one of the following:
These editions all come with everything your students need to develop the Windows Forms applications presented in this book. That includes the Visual Studio development environment, version 4.6 of the Microsoft .NET Framework, Visual Basic 2015, and a simplified version of SQL Server called SQL Server Express LocalDB.
We used the Professional Edition as the basis for this book, but you’ll find that there are a few differences in the Community Edition. For example, CodeLens and InstallShield aren’t available in the Community Edition. Overall, though, these differences don’t affect how you develop Visual Basic applications. So all of the skills your students learn and all of the applications they develop with the Community Edition will still work with the other editions of Visual Studio.
Appendix A of the book shows your students how to install any of the Visual Studio 2015 editions on their own PCs.
“Murach’s Visual Basic 2015 is an excellent book and I have no reservations in recommending it to programmers on any level. I feel that the paired page format is particularly suited to those learning a new language but I also feel that the book would serve just as equally as a valuable reference tool for more experienced programmers.
“I own number of books published by Murach, and in my opinion they consistently offer a superior product at an affordable price. You can't go wrong with Murach.”
- Patrick Byrne, Lower Alabama .NET User Group
“I highly recommend this book. I have taken some video courses on Visual Basic, and I have learned some things from them, but this book really feels in the gaps. I like the structure of the book with the reading on the left side and the code examples and summary details on the right side. Anyone who is new to programming should consider this book.”
- Posted at an online bookseller
“It's gotten to the point now where I FIRST check for a title by Murach's before I get a reference book. This latest title I purchased to beef up my skills going from VBA to VB.NET. It is a life saver.”
- Posted at an online bookseller
“Murach’s Visual Basic 2015 is a phenomenal teaching and working aid—it is clearly written, giving great examples, and explaining the oddities you sometimes encounter as you go along.
“But wait…there’s more to it than first meets the eye. While the book IS, as the title implies, predominately aimed at teaching Visual Basic 2015, it is so well done that it can also help teach how to work with numerous more esoteric, yet vital, topics in other languages. Examples of this abound: you’ll find in-depth sections dealing with database programming, inheritance, data streams, XML files, LINQ, and more.
“I heartily recommend that you do put a copy of this volume on your bookshelf even if most of your work is in another language. This is a great book for teaching and if you’re a programmer, sooner or later, one way or another, it WILL pay for itself.”
- Wallace Allison, ITSBITS.com
View the table of contents for this book in a PDF: Table of Contents (PDF)
Click on any chapter title to display or hide its content.
.NET applications
Visual Studio and the .NET programming languages
The .NET Framework
The Visual Studio IDE
How a Visual Basic application is compiled and run
How Visual Basic differs from the other .NET languages
How to start Visual Studio
How to open or close an existing project
Some possible menu variations
How to use the Form Designer
How to use the Code Editor
How to use the Solution Explorer
How to work with Visual Studio’s windows
How to build a project
How to run a project
How to upgrade projects created in earlier versions of Visual Basic
How to change the .NET Framework version used by a project
How to set the Visual Studio options
How to change the environment settings
How to create a new project
The design of the Invoice Total form
How to add controls to a form
How to set properties
Common properties for forms and controls
How to add navigation features
The property settings for the Invoice Total form
How to use Document Outline view
How to name the files of a project
How to save the files of a project
Introduction to object-oriented programming
How to refer to properties, methods, and events
How an application responds to events
How to create an event handler for the default event of a form or control
How IntelliSense helps you enter the code for a form
Coding rules for Visual Basic statements
The event handlers for the Invoice Total form
How to code with a readable style
How to code comments
How to detect and correct syntax errors
How to use the toolbar buttons
How to collapse or expand code
How to zoom in and out
How to highlight symbols
How to print the source code
How to use code snippets
How to refactor code
How to perform quick actions with light bulbs
How to use the annotations in the scroll bar
How to use the My feature
How to get help information
How to run a project
How to test a project
How to debug runtime errors
The built-in value types
How to declare and initialize variables
How to declare and initialize constants
How to code arithmetic expressions
How to code assignment statements
How to work with the order of precedence
How to use casting
How to change the type semantics
How to use the Math class
How to declare and initialize a string
How to join and append strings
The .NET structures and classes that define data types
How to use Visual Basic functions to convert data types
How to use methods of the .NET data structures to convert data types
How to use methods of the Convert class to convert data types
How to use three of the formatting functions
How to use methods to convert numbers to formatted strings
How to work with scope
How to declare and use enumerations
How to work with nullable types
The basic Invoice Total application
The enhanced Invoice Total application
How to use the relational operators
How to use the logical operators
How to code If statements
How to code Select Case statements
An enhanced version of the Invoice Total application
How to code For loops
How to code Do loops
How to use Exit and Continue statements
Debugging techniques for programs with loops
The design and property settings for the form
The code for the form
How to code Sub procedures
How to call Sub procedures
When and how to pass arguments by reference and by value
How to code and call Function procedures
How to use optional parameters
How to use refactoring to create a new procedure and its calling statement
How to start an event handler for any event
How to handle multiple events with one event handler
How to use the Code Editor to start an event handler
How to add and remove event wiring
The Function procedure
The event handlers
How to use the IsNumeric function for data validation
How to display a dialog box for error messages
How exception handling works
How to catch an exception
How to use the properties and methods of an exception
How to catch specific types of exceptions
How to throw an exception
The Future Value application with exception handling
How to validate a single entry
How to use generic procedures to validate an entry
How to validate multiple entries
The dialog boxes
The code
How to use the Validating event
How to use the masked text box
How to create an array
How to assign values to the elements of an array
How to use For loops to work with arrays
How to use For Each loops to work with arrays
How to create a rectangular array
How to assign values to a rectangular array
How to work with rectangular arrays
How to create a jagged array
How to assign values to a jagged array
How to work with jagged arrays
How to use the Array class
How to refer to, copy, and resize arrays
How to code procedures that work with arrays
How to use the null-conditional operator
Commonly used collection classes
Typed vs. untyped collections
How to work with a list
How to work with a sorted list
How to work with queues and stacks
How to work with an array list
How to create a DateTime value
How to get the current date and time
How to format DateTime values
How to get information about dates and times
How to perform operations on dates and times
How to use Visual Basic properties and functions to work with dates and times
The properties and methods of the String class
Code examples that work with strings
More examples that work with strings
How to use the Parse and TryParse methods to validate numeric entries
How to use the StringBuilder class
How to use Visual Basic functions to work with strings
How to format numbers
How to format dates and times
How to use interpolated strings
Five more types of controls
How to work with combo boxes and list boxes
How to work with check boxes and radio buttons
How to work with group boxes
How to use Tab Order view to set the tab order
How to get the information you need for using a control
How to add a form to a project
How to rename a form
How to change the startup form for a project
How to display a form as a dialog box
How to pass data between a form and a custom dialog box
How to display a dialog box and get the user response
How to use the FormClosing event
The operation
The property settings
The code for the Customer form
The code for the Payment form
How classes can be used to structure an application
The members you can define within a class
The code for the Product class
How instantiation works
How to add a class file to a project
How to code fields
How to code standard properties
How to code auto-implemented properties
How to code methods
How to code constructors
How to code shared members
How to generate code stubs
The operation of the Product Maintenance application
The classes used by the Product Maintenance application
The code for the Product Maintenance application
How to browse the classes in a solution
How to use class diagrams and the Class Details window
How to use the Peek Definition window
How to create a structure
How to use a structure
How to set the debugging options
How to work in break mode
How to use the Edit and Continue feature
How to work with data tips
How to use breakpoints
How to control the execution of an application
How to use the Locals window to monitor variables
How to use the Autos window to monitor variables
How to use Watch windows to monitor expressions
How to use the Immediate window to execute commands
How to use the Call Stack window to monitor called procedures
How to use the Call Hierarchy window to navigate through your code
How to use the Output or Immediate window to get build
or debugging information
How use the Visualizer dialog boxes to view strings
The hardware components of a client/server system
The software components of a client/server system
How a table is organized
How the tables in a database are related
How the columns in a table are defined
The design of the MMABooks database
How to query a single table
How to join data from two or more tables
How to add, update, and delete data in a table
The .NET data providers
How the basic ADO.NET components work
Concurrency and the disconnected data architecture
How a dataset is organized
How to work with data without using a data adapter
Two ways to create ADO.NET objects
How to use the Data Sources window
How to start the Data Source Configuration Wizard
How to choose a data source type
How to choose the database model for a data source
How to choose the connection for a data source
How to create a connection to a database
How to save a connection string in the App.config file
How to choose database objects for a data source
The schema file created by the Data Source Configuration Wizard
How to generate a DataGridView control from a data source
A Product Maintenance application that uses a DataGridView control
How to change the controls associated with a data source
How to generate detail controls from a data source
A Customer Maintenance application that uses TextBox controls
How to handle data provider errors
How to handle ADO.NET errors
How to handle data errors for a DataGridView control
How to view the schema for a dataset
How to use the Query Builder
How to preview the data for a query
How to interpret the generated SQL statements
How to format the data displayed in a text box
How to bind a combo box to a data source
How to use code to work with a binding source
How to create a parameterized query
How to use code to work with a parameterized query
How to use the Items Collection Editor
How to code an event handler for a ToolStrip item
The user interface
The code
How to modify the properties of a DataGridView control
How to edit the columns of a DataGridView control
How to format the data in the columns of a DataGridView control
How to use a DataGridView control to create a Master/Detail form
The user interface
The dataset schema
The code for the Customer Invoices form
How to create and work with connections
How to create and work with commands
How to use parameters in SQL statements
How to create parameters
How to work with parameters
How to create and work with a data reader
How to execute queries that return a single value
How to execute action queries
The user interface
The class diagram for the business and database classes
The code for the CustomerDB class
The code for the StateDB class
The code for the MMABooksDB class
The code for the Customer Maintenance form
The code for the Add/Modify Customer form
The code for a simple ProductList class
The specifications for the enhanced ProductList class
How to create a default property
How to throw an argument exception
How to define events
How to use events
An introduction to operator overloading
How to overload arithmetic operators
How to overload relational operators
The code for the ProductList class
The code for the Product Maintenance form
How inheritance works
How the .NET Framework uses inheritance
Methods inherited from the System.Object class
How to use inheritance in your applications
How to create a base class
How to create a derived class
How polymorphism works
The operation of the Product Maintenance application
The code for the Product, Book, and Software classes
The code for the ProductList class
The code for the Product Maintenance form
The code for the New Product form
How to use the Type class to get information about an object’s type
How to use casting with inheritance
How to work with abstract classes
How to work with sealed classes
An introduction to interfaces
Some of the interfaces defined by the .NET Framework
How to create an interface
How to implement an interface
A Product class that implements the ICloneable interface
How to use an interface as a parameter
How to code a class that defines a generic collection
Some of the generic interfaces defined by the .NET Framework
How to implement the IComparable() interface
How to use constraints
How to code an interface that uses generics
How to code multiple classes in a single file
How to split a single class across multiple files
How to work with namespaces
How to add XML documentation to a class
How to view the XML documentation
How class libraries work
How to create a class library project
How to add a reference to a class library
How to use the classes in a class library
The classes for managing directories, files, and paths
How files and streams work
How to use the FileStream class
How to use the exception classes for file I/O
How to use the My.Computer.FileSystem object
How to write a text file
How to read a text file
A class that works with a text file
How to write a binary file
How to read a binary file
A class that works with a binary file
An XML document
XML tags, declarations, and comments
XML elements
XML attributes
How to create a new XML file
How to open an existing XML file
How to edit an XML file
How to use the XmlWriter class
Code that writes an XML document
How to use the XmlReader class
How the XmlReader class reads nodes
Code that reads an XML document
A class that works with an XML file
How LINQ is implemented
Advantages of using LINQ
The three stages of a query operation
How to identify the data source for a query
How to filter the results of a query
How to sort the results of a query
How to select fields from a query
How to join data from two or more data sources
How extension methods work
Extension methods used to implement LINQ functionality
How lambda expressions work
How to use lambda expressions with extension methods
The user interface
The code for the form
The dataset schema
The code for the form
How the Entity Framework works
How to start an Entity Data Model with the Entity Data Model Wizard
How to choose the Entity Framework version
How to choose the database objects
The Entity Data Model in the Entity Data Model Designer
Basic skills for using the designer
How to use the Model Browser window
How to use the Mapping Details window
How to retrieve data from a single table
How to query across relationships
How to load related objects
How to update an existing row
How to delete an existing row
How to add a new row
How to provide for concurrency
How to create an object data source
How to bind controls
The user interface
The Entity Data Model
The code for the MMABooksEntity class
The code for the Customer Maintenance form
The code for the Add/Modify Customer form
A single-document interface (SDI)
A multiple-document interface (MDI)
How to use a startup form
How to use a Tab control
How to create menus
How to set the properties that work with menu items
How to write code that works with menu items
How to create parent and child forms
How to write code that works with parent and child forms
How to create a toolbar
How to write code that works with toolbars
How to create a simple status bar
How to create a status bar with multiple panels
How to create and code a module
How to use a Main procedure
How to add tool tips
How to add context-sensitive help
How XCopy works
How ClickOnce works
How a Setup program works
How to create a release build
How to copy the release build to the client
How to publish an application
How to select the files that are published
How to select the prerequisites
How to set the update options
How to set the publish options
How to install an application
How to update an application
How to create an InstallShield project
How to use the InstallShield Project Assistant
How to add output files to an InstallShield project
How to create and view the installation files for a Setup program
How to use a Setup program to install an application
Using ClickOnce deployment
Using a Setup program
How to use the downloadable files
How to install Visual Studio 2015
How to use the MMABooks database
If you aren’t already familiar with the supporting courseware that we provide for a book, please go to About our Courseware. As you will see, our courseware consists of the end-of-chapter activities in the book, the files in the student download at our retail site, and the instructor’s materials. These components provide everything that other publishers provide in a way that delivers better results.
If you are familiar with our courseware, here’s a quick summary of the courseware for this book. For a detailed description in PDF format, please read the Instructor’s Summary.
Appendix A in the book gives your students complete instructions for downloading and installing these items on their PCs.
To view the "Frequently Asked Questions" for this book in a PDF, just click on this link: View the questions
Then, if you have any questions that aren't answered here, please email us. Thanks!
There are no book corrections that we know of at this time. But if you find any, please email us, and we’ll post any corrections that affect the technical accuracy of the book here. Thank you!
This is our site for college instructors. To buy Murach books, please visit our retail site.