Professional Documents
Culture Documents
Gui Notes
Gui Notes
The .NET Framework provides an unprecedented platform for building Windows, web, and mobile
applications with one or more languages.
Within the .NET Framework, new languages (C# and F#) have been born, and the well-established
Visual Basic language has been reborn. The .NET Framework even supports legacy languages such as
C++. The .NET Framework provides the base for all development using Visual Studio 2010. It provides
base classes, available to all Visual Studio 2010 languages for such functions as accessing databases,
parsing XML, displaying and processing Windows and web forms, and providing security for your
applications. All languages in Visual Studio 2010 share and use the same base classes, making your
choice of a programming language in Visual Studio 2010 a matter of personal preference and syntax
style.
.NET is a programming layer. It is totally owned and controlled by Microsoft. By turning all
developers into .NET programmers, rather than Windows programmers, software is written as .NET
software, not Windows software.
Unlike the Win32 API, .NET is totally object-oriented. Anything you want to do in .NET, you
are going to be doing with an object. If you want to open a file, you create an object that knows how
to do this. If you want to draw a window on the screen, you create an object that knows how to do
this.
Another really nice thing about the base classes in the .NET Framework is that they are the
same irrespective of the language used, so if you are writing a Visual Basic 2010 application, you use
the same object you would use from within a C# application. That object will have the same
methods, properties, and events, meaning there is very little difference in capabilities between the
languages, as they all rely on the Framework.
The Common Language Runtime (CLR) is the heart of .NET. CLR takes your .NET application, compiles
it into native processor code, and runs it. It provides an extensive range of functionalities to help
applications run properly:
➤ Application isolation
➤ Memory management
➤ Security
➤ Exception handling
➤ Interoperability
Code Loading and Execution The code loading and execution part of the CLR deals with reading
the MSIL code from the disk and running it. It compiles the code from MSIL into the native code
(machine code) that the processor understands.
from the standpoint of both security and stability. With proper application isolation, one application
crashing should not cause others to crash.
Security .NET has powerful support for the concept of code security. The Framework was
designed to give system administrators, users, and software developers a fine level of control over
what a program can and cannot do.
InteroperabilityOne kind of interoperation is at the core of the framework, where data types are
shared by all managed languages. This is known as the Common Type System (CTS). The other type of
interoperation is that of communicating with existing Component Object Model (COM) interfaces.
The Common Type System (CTS) enables software written in different languages to work
together. Before .NET, Visual Basic and C++ handled strings completely differently, and you had to go
through a conversion process each time you went from one to the other. With the CTS in place,
all .NET languages use strings, integers, and so on in the same way, so no conversion needs to take
place.
In addition, the Common Language Specification (CLS) was introduced by Microsoft to make
it easier for language developers to adapt their languages to be compatible with .NET.
If you wrote an application with Visual Basic 6, you had to compile it into a set of x86
machine instructions before you could deploy it. This machine code would then be installed and
executed on any machine that supported x86 instructions and was also running Windows.
If you write an application with Visual Basic 2010, you still have to compile the code.
However, you do not compile the Visual Basic 2010 code directly into x86 machine instructions,
because that would mean that the resulting program would run only on processors that support this
language — in other words, the program would run only on Intel chips and their compatible
competitors. Instead, compilation creates something called Microsoft Intermediate Language (MSIL).
This language is not dependent on any processor. It is a layer above the traditional machine code.
Event-Driven Programming
A Windows program is quite different from yesteryear’s MS-DOS program. A DOS program is
like walking down a hallway; to get to the end you have to walk down the entire hallway, passing any
obstacles that you may encounter. A DOS program would only let you open certain doors along your
stroll.
Windows, on the other hand, opened up the world of event-driven programming. Events in
this context include clicking a button, resizing a window, or changing an entry in a text box. The code
that you write responds to these events. In terms of the hallway analogy: In a Windows program, to
get to the end of the hall you just click the end of the hall. The hallway itself can be ignored. If you
get to the end and realize that is not where you wanted to be, you can just set off for the new
destination without returning to your starting point. The program reacts to your movements and
takes the necessary actions to complete your desired tasks.
Another big advantage in a Windows program is the abstraction of the hardware, which
means that Windows takes care of communicating with the hardware for you. Windows wraps up
this functionality by providing generic routines that communicate with the drivers written by
hardware manufacturers. This is probably the main reason why Windows has been so successful.
The generic routines are referred to as the Windows application programming interface (API), and
most of the classes in the .NET Framework take care of communicating with those APIs.
CONTROL PREFIX
Button btn
ComboBox cbo
CheckBox chk
Label lbl
ListBox lst
MainMenu mnu
RadioButton rdb
PictureBox pic
TextBox txt
Form frm
Syntax Errors
Syntax errors, the easiest type of errors to spot and fix, occur when the code you have written
cannot be understood by the compiler because instructions are incomplete, supplied in unexpected
order, or cannot be processed at all. An example of this would be declaring a variable of one name
and misspelling this name in your code when you set or query the variable.
Execution Errors
Execution errors (or runtime errors) occur while your program is executing. These errors are often
caused because something outside of the application, such as a user, database, or hard disk, does
not behave as expected.
Logic Errors
Logic errors (or semantic errors) lead to unexpected or unwanted results because you did not fully
understand what the code you were writing would do. Probably the most common logic error is an
infinite loop. Logic errors can be the most difficult to find and troubleshoot, because it is very
difficult to be sure that your program is completely free of them.
2. EXCEPTION
An exception is a problem that arises during the execution of a program. An exception is a response
to an exceptional circumstance that arises while a program is running, such as an attempt to divide
by zero. Exceptions provide a way to transfer control from one part of a program to another.
3. EXCEPTION HANDLING
VB.Net exception handling is built upon four keywords: Try, Catch, Finally and Throw.
Try: A Try block identifies a block of code for which particular exceptions will be activated. It's
followed by one or more Catch blocks.
Catch: A program catches an exception with an exception handler at the place in a program where
you want to handle the problem. The Catch keyword indicates the catching of an exception.
Finally: The Finally block is used to execute a given set of statements, whether an exception is
thrown or not thrown. For example, if you open a file, it must be closed whether an exception is
raised or not.
Throw: A program throws an exception when a problem shows up. This is done using a Throw
keyword.
Take a look at the syntax for the Try ... Catch ... Finally statement:
Try
[try statements]
[Exit Try]
Catch exceptionvariable As exceptiontype
[catch statements]
[Exit Try]
[Additional Catch blocks]
Finally
[finally statements]
End Try
3. CONTEXT MENUS
Context menus are menus that pop up when a user clicks the right mouse button on a control or
window. They provide users with quick access to the most commonly used commands for the
control that they are working with. As you just saw in the preceding section, the context menu that
appeared provides you with a way to manage the text in a text box.
THE MESSAGEBOX
MessageBox is one of those dialog boxes that you will use often as a developer. This dialog box
enables you to display custom messages to your users and accept their input regarding the choice
that they have made. This dialog box is very versatile; you can customize it to display a variety
of icons with your messages and choose which buttons to display.
OPENFILEDIALOG CONTROL
SAVEFILEDIALOG CONTROL
FONTDIALOG CONTROL
COLORDIALOG CONTROL
PRINTDIALOG CONTROL
FOLDERBROWSERDIALOG CONTROL
5. Debugging
Debugging is an essential part of any development project, as it helps you find errors both in
your code and in your logic. Visual Studio 2010 has a sophisticated debugger built right into the
development environment. This debugger is the same for all languages that Visual Studio 2010
supports.
The QuickWatch dialog box is best for watching a single variable or expression. You can add or delete
variables or expressions in the QuickWatch dialog box only when your program is in break mode.
Therefore, before you run your program, you need to set a breakpoint before the variable or
expression that you want to watch. When the breakpoint has been reached, you can add as many
Watch variables or expressions as needed.
paused before a value can be changed). The text for a value that has just changed also turns red,
making it easy to spot the variable or object that was changed.
The Locals window is great if you want a quick glance at everything that is going on in a
function or procedure, but it is not very useful for watching the values of one or two variables or
expressions. That’s because the Locals window contains all variables and objects in a procedure or
function.
6. Setting Breakpoints
When trying to debug a large program, you may find that you want to debug only a section of code;
that is, you want your code to run up to a certain point and then stop. This is where breakpoints
come in handy; they cause execution of your code to stop anywhere they are set. You can set
breakpoints anywhere in your code and your code executes to that point and stops.
You can set breakpoints by clicking the gray margin next to the line of code on which you
want to set the breakpoint or by pressing F9 while on the line you want to set a breakpoint on or
take one off. When the breakpoint is set, you can see a solid red circle in the gray margin, and the
line is highlighted in red. When you are done with a particular breakpoint, you can remove it by
clicking the solid red circle.
7. WHAT IS A DATABASE?
A database consists of one or more large, complex files that store data in a structured format. The
database engine, in your case Microsoft Access, manages the file or files and the data within those
files.
9. Tables
A table contains a collection of data, which is represented by one or more columns and one or more
rows of data. Columns are typically referred to as fields in Microsoft Access, and the rows are
referred to as records. Each field in a table represents an attribute of the data stored in that table.
For example, a field named First Name would represent the first name of an employee or customer.
This field is an attribute of an employee or customer. A record in a table contains a collection of
fields that form a complete set of attributes of one instance of the data stored in that table. For
example, suppose a table contains two fields: First Name and Last Name. These two fields in a single
record describe the name of that one person.
10. Queries
A query in a database is a group of Structured Query Language (SQL) statements that allow you to
retrieve and update data in your tables. Queries can be used to select, insert, delete, or even update
all of the data or specific data in one or more tables.
DataSet
The DataSet is a cache of data that is stored in memory. It’s a lot like a mini database engine, but
its data exists in memory. You can use it to store data in tables, and using the DataView component,
you can query the data in various ways.
DataGridView
The DataGridView control is a container that allows you to bind data from your data source and have
it displayed in a spreadsheet-like format, displaying the columns of data horizontally and the rows of
data vertically.
BindingSource
The BindingSource acts like a bridge between your data source (DataSet) and your data-bound
ontrols (that is, controls that are bound to data components). Any interaction with the data from
your controls goes through the BindingSource, which in turn communicates with your data source.
BindingNavigator
The BindingNavigator control provides a standard UI that enables you to navigate through the
ecords in your data source.
TableAdapter
The TableAdapter contains the query that is used to select data from your database, as well as
connection information for connecting to your database. It also contains methods that will fill the
DataSet in your project with data from the database. You can also choose to have the TableAdapter
generate INSERT, UPDATE, and DELETE statements based on the query that is used to select data.
14. ADO.NET
ADO.NET is designed to provide a disconnected architecture. This means that applications connect to
the database to retrieve a load of data and store it in memory. They then disconnect from the
database and manipulate the in-memory copy of the data. If the database needs to be updated with
changes made to the in-memory copy, a new connection is made and the database is updated. The
main in-memory data store is the DataSet, which contains other in-memory data stores, such as
DataTable, DataColumn, and DataRow objects. You can filter and sort data in a DataSet using
DataView objects.
The next property that must be set is the CommandText property. This property specifies the SQL
string or stored procedure to be executed. Most databases require that you place all string values in
single quote marks, as shown here in bold:
Dim objConnection As SqlConnection = New _
SqlConnection("server=(local);database=pubs;user id=sa;password=")
Dim objCommand As SqlCommand = New SqlCommand()
objCommand.Connection = objConnection
objCommand.CommandText = "INSERT INTO authors " & _
"(au_id, au_lname, au_fname, contract) " & _
"VALUES(’123-45-6789’, ‘Barnes’, ‘David’, 1)"
The AddWithValue method here accepts the name of the parameter and the object that you want to
add.
In thin-client architecture, there is typically no program or DLL to be distributed. Users merely need
to start their browsers and enter the URL of the application website. The server hosting the website
is responsible for allocating all resources the web application requires. The client is a navigation tool
that displays the results the server returns.
All code required in a thin-client application stays in one central location: the server hosting the
website. Any updates to the code are immediately available the next time a user requests a web
page.
Thin-client architecture provides several key benefits. First and foremost is the cost of initial
distribution of the application — there is none. In traditional client/server architecture, the program
would have to be distributed to every client who wanted to use it, which could be quite a time-
consuming task if the application is used in offices throughout the world.
Another major benefit is the cost of distributing updates to the application — again, there is none.
All updates to the website and its components are distributed to the web server. Once an update
is made, it is immediately available to all users the next time they access the updated web page. In
traditional client/server architecture, the updated program would have to be distributed to every
client, and the updates could take days or weeks to roll out. Thin-client architecture allows a new
version of an application to be distributed instantly to all the users without having to touch a single
desktop.
Another major benefit is that you can make changes to the back-end architecture and not have to
worry about the client. In a traditional client/server application, the machine name of the database
server is stored in the code or Registry setting. You would need to modify either the code or the
Registry setting for every person who uses the application. In thin-client architecture, you simply
need to update the setting of the web server to point to the new database server and you are in
business, and so are all of the clients.
A major advantage of Windows Forms is trust. When a user installs the application, it is given trust in
the current zone. With this high-enough level of trust, you can store data and state about the
current session on the local computer. The user can run the application and it can interact with the
local file system or Registry seamlessly. Trust is very limited, however, for an Internet application.
Another advantage is having control over the client application. This allows you to build a very
powerful, rich user interface.
Also, application responsiveness is an advantage with Windows Forms. With most or all of the
processing being done on the client, the need to send data over the wire can be reduced. Any
amount of data sent to servers can cause latency. For an application running locally on a computer,
the normal events are handled more quickly. In addition, the speed of data transmission over a local
network is much faster than the typical Internet connection. This speed enables data to move across
the wire faster and create less of a bottleneck for the user.
The greatest advantage of a web application is distribution. To distribute a Web Forms application,
just install it on the web server. That’s it. There’s no need to create an installation for every version
of Windows, or ship CDs. When you make a change, just publish the change to the web server; and
the next time customers access the site, they will use the latest application.
Version control, or change control, is another advantage. With all of your application code at the
same location, making changes is a breeze. You never have to worry about one user on version 8 and
another on version 10; all users access the same application. As soon as you publish a change, all
users see the update — with no user intervention necessary.
You may be familiar with the term platform independence. Web applications have it. It doesn’t
matter what type of computer the user has — as long as there is a browser and a connection to your
web server, the user can access your application. There is no need to build application versions for
different operating systems.
Web Servers
There are many web servers on the market today. The most well-known web servers in use today
are Microsoft Internet Information Services (IIS) and Apache.
Browsers
Every user of a Web Forms application must have a browser. The five most popular browsers are
Microsoft Internet Explorer (IE), Firefox, Chrome, Safari, and Opera. When you develop public
websites, you must be aware that the site may render differently in each browser.
JavaScript
A major part of web development is client-side script. If you are creating an application for the public
that uses client-side script, you need to use JavaScript for support in all browsers. VBScript is a
Microsoft-centric language that is more like Visual Basic syntax and slowly going away.
Client-side scripting is typically used for data validation and dynamic HTML (DHTML). Validation
scripts enforce rules that may require the user to complete a field on the screen before continuing.
DHTML scripts allow the page to change programmatically after it is in memory on the browser.
Expanding menus is an example of DHTML.
Execution time is one benefit for which ASP.NET stands out above the rest. When an ASP.NET page is
requested the first time, a compiled copy is placed into memory on the server for the next request.
This offers great performance gains over interpreted languages.
Using Visual Studio 2010 to design your applications also makes a big difference in productivity. The
.NET Framework supplies thousands of namespaces, objects, and controls for use in developing Web
Forms applications. In addition, ASP.NET also supports all .NET-compatible languages. By default,
Visual Basic and C# are available in Visual Studio 2010.
Global.asax
The global.asax file allows you to add code to certain application-level events. The most common
events are Application_Start, Application_End, Session_Start, Session_End, and Application_Error.
The application start and end events fire when the actual web application inside of IIS changes state.
The application start event will fire with the first request to a website after the server or IIS is
restarted. The session events fire on a per user/browser session on the web server. When you save
data to the user’s session, you must be careful. This data will be saved for every user/browser that is
browsing the application, which can create an extra load on the server. You can use the final event,
Application_Error, to log all unhandled exceptions in one common place. Make sure to redirect users
to a friendly error page after logging the error.
Web.config
Web.config is exactly what it appears to be — a configuration file for the web application; it is an
XML document. You can update many application settings for security, errors, and much, much
more. In most production apps, you store your connection string to the database here.
Deployment is the art of distribution. In other words, deployment is the way in which software
is delivered. Installation or setup is a process, whereby you load, configure, and install the software.
In other words, an installation is what you do to configure the software, and deployment
is how you get it where you want it.
End Class
Adding methods
33. Constructor
A class constructor is a special member Sub of a class that is executed whenever we create new
objects of that class. A constructor has the name New and it does not have any return type.
Example:
The following example shows how to overload New and create multiple class constructors:
Class BankAccount
Private balance as Double
Sub New( )
34. Inheritance
In object-oriented programming, you can share
the characteristics of a base class in other
classes derived from the base class. This is
called inheritance.
Inheritance is the concept of reusing
common attributes and operations from a base
class in a derived class.
Imagine three classes: Customer,
Employee, and Person. The attributes and
operations of the Person base class can be
applied to Customer or Employee too. Reusing
these attributes and operations is an efficient
technique.
Visual Basic .NET supports single inheritance at the class level. That is, a class can only inherit
from a single base class. This is shown in the example in the previous illustration. Other languages,
such as C++, allow a class to inherit from multiple classes.
35. Polymorphism
Polymorphism refers to the ability to define multiple
classes with different functionally but identically named
methods or properties that can be used interchangeably
by client code at run time. The method name resides in
the base class. The method implementations reside in the
derived classes. To manage this, only the name of the
method (not the code that provides the method’s
functionality) can be declared in the base class.
Suppose you define a class named BaseTax that
provides basic functionality for computing sales tax in a
state. Classes derived from BaseTax, such as CountyTax or CityTax, could implement methods such
as CalculateTax.
Polymorphism refers to the fact that the implementation of the CalculateTax method might
be different in each of the derived classes. The county tax rate might be different from the city tax
rate, for example. Any class that inherits from BaseTax will have a CalculateTax method, but the way
that the tax is actually calculated might vary in each of the derived classes.
36. Namespace
Namespaces are used as an organizational system—a way to present logically related program
components that are available to other programs and applications. A namespace can contain both
other namespaces and types.
An example of a namespace is the System.Windows.Forms namespace. This namespace
provides the relevant classes required to create forms. The Forms namespace is contained in the
Windows namespace, which is contained in the System namespace.
Namespaces are always Public, so you cannot declare a namespace with an access modifier.
However, the components in the namespace can have Public or Friend access. If the access modifier
is not stated, the default access type is Friend.
In Visual Basic .NET, you use the Namespace statement to define a new namespace, which
encapsulates the classes that you create, as shown in the following example:
Namespace CompVB
Public Class StringComponent
...
End Class
End Namespace
Imports System.Windows.Forms
Public Class Form1
Inherits Form
If you omit the Imports statement, you will need to use the fully qualified name of the namespace,
as shown in the following example:
Public This modifier tells the CLR (Common Language Runtime) that the specific member can be
accessed from any application that uses the class. This, as well as the following keywords, are access
modifiers and are strictly inheritance related, but I’m listing them here for completeness.
Private This modifier tells the CLR that the specific member can be accessed only in the module in
which it was declared. All the local variables must be declared as Private, and no other class
(including derived classes) or application will see them.
Protected Protected members have scope between public and private, and they can be accessed in
the derived class, but they’re not exposed to applications using either the parent class or the derived
classes. In the derived class, they have a private scope. Use the Protected keyword to mark the
members that are of interest to developers who will use your class as a base class, but not to
developers who will use it in their applications.
Protected Friend This modifier tells the CLR that the member is available to the class that inherits
the class as well as to any other component of the same project.