1 Lesson 11 — Building and Using A User Control Microsoft Visual Basic.NET, Introduction to...

49
1 Lesson 11 — Building and Using A User Control Microsoft Visual Basic .NET, Introduction to Programming

Transcript of 1 Lesson 11 — Building and Using A User Control Microsoft Visual Basic.NET, Introduction to...

Page 1: 1 Lesson 11 — Building and Using A User Control Microsoft Visual Basic.NET, Introduction to Programming.

1

Lesson 11 — Building and Using A User Control

Microsoft Visual Basic .NET, Introduction to Programming

Page 2: 1 Lesson 11 — Building and Using A User Control Microsoft Visual Basic.NET, Introduction to Programming.

2

Objectives

Build a new user control. Access the properties of a user control. Test the user control in an application. Make a user control available to other

applications. Enhance an existing control and package it

as a new user control. Create a custom user-drawn control.

Page 3: 1 Lesson 11 — Building and Using A User Control Microsoft Visual Basic.NET, Introduction to Programming.

3

Vocabulary

Dynamic link library (DLL) Inheritance Picker System.Drawing User control

Page 4: 1 Lesson 11 — Building and Using A User Control Microsoft Visual Basic.NET, Introduction to Programming.

4

Building User Controls

You can build your own user controls in one of three ways:

Combine existing controls and write code that binds them together.

Enhance an existing control to give it new functionality.

Draw an original control to provide a new user interface.

Page 5: 1 Lesson 11 — Building and Using A User Control Microsoft Visual Basic.NET, Introduction to Programming.

5

LoanCalculator Control

This control collects the loan balance, yearly interest rate, and the number of years of the loan and then calculates and displays the monthly payment. Once data are entered, the monthly payment, as well as the total amount paid back during the life of the loan and the finance charge, are also available as properties of the control.

Page 6: 1 Lesson 11 — Building and Using A User Control Microsoft Visual Basic.NET, Introduction to Programming.

6

Programming Skills

Check your output. After completing a program, check program output by hand, or at least estimate the result in your head or on paper to confirm that the program is displaying correct output. More than one contractor has been burned by spreadsheet estimates for jobs where the spreadsheet formulas were incorrectly entered, resulting in a bid that could not even cover expenses. It is embarrassing to hand over a defective product to the user.

Page 7: 1 Lesson 11 — Building and Using A User Control Microsoft Visual Basic.NET, Introduction to Programming.

7

The Add New Item dialog Box, Showing the Addition of a New User Control

Page 8: 1 Lesson 11 — Building and Using A User Control Microsoft Visual Basic.NET, Introduction to Programming.

8

Layout of Controls on the LoanCalculator User Control

Page 9: 1 Lesson 11 — Building and Using A User Control Microsoft Visual Basic.NET, Introduction to Programming.

9

Step-by-Step 11.1

Public Balance As Decimal

Public Rate As Double

Public Years As Integer

Public Pmt As Decimal

Public TotalPayback As Decimal

Public FinanceCharge As Decimal

Page 10: 1 Lesson 11 — Building and Using A User Control Microsoft Visual Basic.NET, Introduction to Programming.

10

Step-by-Step 11.1

Dim MRate As Double 'Monthly Interest Rate

Dim Payments As Integer 'Total Number of Payment Balance = CDec(txtBalance.Text)

Rate = CDbl(txtRate.Text)

Years = CInt(txtYears.Text)

If Balance = 0 Or Rate = 0 Or Years = 0 Then

Exit Sub

End If

Page 11: 1 Lesson 11 — Building and Using A User Control Microsoft Visual Basic.NET, Introduction to Programming.

11

Step-by-Step 11.1

MRate = Rate / 1200

Payments = Years * 12

Pmt = Balance * MRate / (1 - (1 + MRate) ^

(-Payments))

TotalPayback = Pmt * Payments

FinanceCharge = TotalPayback - Balance

lblPmt.Text = Format(Pmt, "Currency")

Page 12: 1 Lesson 11 — Building and Using A User Control Microsoft Visual Basic.NET, Introduction to Programming.

12

The LoanCalculator Control at the Bottom of the Toolbox

Page 13: 1 Lesson 11 — Building and Using A User Control Microsoft Visual Basic.NET, Introduction to Programming.

13

Note

If a user control is flawed, open the control’s Designer to make changes and then rebuild the control. Until the control is rebuilt, the changes made to the control will not take affect.

Page 14: 1 Lesson 11 — Building and Using A User Control Microsoft Visual Basic.NET, Introduction to Programming.

14

Accessing Properties of the User Control

You access the properties of a user control in the same way you access the properties of an object created with a class definition. The simplest way to create a property in a class definition is to use a Public statement to declare a variable. The user control is really a class definition, so the rules for creating properties in a user control are the same as the rules for creating properties in a class definition.

Page 15: 1 Lesson 11 — Building and Using A User Control Microsoft Visual Basic.NET, Introduction to Programming.

15

Final Placement of Controls for the LoanCalculator Application

Page 16: 1 Lesson 11 — Building and Using A User Control Microsoft Visual Basic.NET, Introduction to Programming.

16

Step-by-Step 11.2

MessageBox.Show("The Total of the Payments is " & _

Format(LoanCalculator1.TotalPayback, "Currency"))

MessageBox.Show("The Total Finance charge is " & _

Format(LoanCalculator1.FinanceCharge, "Currency"))

Page 17: 1 Lesson 11 — Building and Using A User Control Microsoft Visual Basic.NET, Introduction to Programming.

17

The Object Browser Showing the LoanCalculator Object

Page 18: 1 Lesson 11 — Building and Using A User Control Microsoft Visual Basic.NET, Introduction to Programming.

18

Declaring Variables

Public properties of a user control (that is, properties available for use by the application in which the user control is used), can be declared as variables in the Declarations section with the keyword Public. Variables declared with the keyword Dim are not public and, therefore, not available to an application. Variables declared within an event procedure in the user control are not visible, but locked. Like variables declared with Dim in the Declarations section, they are completely invisible to the application.

Page 19: 1 Lesson 11 — Building and Using A User Control Microsoft Visual Basic.NET, Introduction to Programming.

19

Making a User Control Available to Other Applications

To build user controls that you can use in multiple applications, you must add the user controls to a Windows Control Library project.

Page 20: 1 Lesson 11 — Building and Using A User Control Microsoft Visual Basic.NET, Introduction to Programming.

20

Windows Control Library Selected in the Templates Pane of the New Project DialogBox

Page 21: 1 Lesson 11 — Building and Using A User Control Microsoft Visual Basic.NET, Introduction to Programming.

21

The CircleArea User Control Showing Placement of Controls

Page 22: 1 Lesson 11 — Building and Using A User Control Microsoft Visual Basic.NET, Introduction to Programming.

22

Step-by-Step 11.3

Public Radius, Area, Circumference As Double Try Radius = CDbl(txtRadius.Text) Catch When Radius = 0 MessageBox.Show("The radius is 0, please reenter.") Exit Sub Catch When Radius < 0 MessageBox.Show("The radius is negative, please

reenter.") Exit Sub End Try Area = Math.PI * Radius ^ 2 Circumference = 2 * Math.PI * Radius lblArea.Text = Format(Area, "#,##0.######")

Page 23: 1 Lesson 11 — Building and Using A User Control Microsoft Visual Basic.NET, Introduction to Programming.

23

Error Message Received When You Try to Execute a Windows Control Library Project

Page 24: 1 Lesson 11 — Building and Using A User Control Microsoft Visual Basic.NET, Introduction to Programming.

24

Programming Skills

A great way to debug a program is to explain it to someone else. Formal “walkthroughs” are often used in industry to discover program bugs. Explaining program code to your peers helps you focus on problems and discover logical errors that you did not expect existed. Print out code to review it. Often, mistakes overlooked on a computer monitor jump out at you when you look at a printout.

Page 25: 1 Lesson 11 — Building and Using A User Control Microsoft Visual Basic.NET, Introduction to Programming.

25

Historically Speaking

In 1964, professors John G. Kemeny and Thomas E. Kurtz of Dartmouth University designed a programming language for incoming computer students: Beginners All-purpose Symbolic Instruction Code or BASIC. Eleven years later in 1975, Paul Allen and Bill Gates wrote a version of BASIC for the MITS Altair 8800 computer with 4K memory. Programmers at Microsoft, the company founded by Gates and Allen, went on to write several versions of BASIC for many different microcomputers. Gates himself participated in many of the early projects.

Page 26: 1 Lesson 11 — Building and Using A User Control Microsoft Visual Basic.NET, Introduction to Programming.

26

Projects Tab in the Add Reference Dialog Box

Page 27: 1 Lesson 11 — Building and Using A User Control Microsoft Visual Basic.NET, Introduction to Programming.

27

Note

Depending on your screen resolution, you may want more room on the screen to see the Code window. When you are not adding controls to a form or user control, close the Toolbox by clicking its Close button. Restore the Toolbox by clicking its button on the toolbar. The Toolbox button has a crossed wrench and hammer on it.

Page 28: 1 Lesson 11 — Building and Using A User Control Microsoft Visual Basic.NET, Introduction to Programming.

28

Adding to an Existing Control

Another way to create a unique user control is to add new functions to an existing control. In this section you modify the LoanCalculator control that you defined earlier in this lesson to display a simple amortization table. The modified control inherits all the functions of the original control.

Page 29: 1 Lesson 11 — Building and Using A User Control Microsoft Visual Basic.NET, Introduction to Programming.

29

Programming Skills

Do you know everything you need to know to write the programs required for your job? Read the on‑line documentation. Read publications dedicated to Visual Basic or Visual Studio. You will probably find program features and code that solve problems in different or better ways. Visual Basic is a large language. Chances are there is something more you can learn to improve programming skills.

Page 30: 1 Lesson 11 — Building and Using A User Control Microsoft Visual Basic.NET, Introduction to Programming.

30

Historically Speaking

In 1979, Dan Bricklin and Bon Frankston designed and wrote the first electronic spreadsheet program, Visicalc. They purposely did not seek patent protection for their creation. This act greatly stimulated the computer industry because it turned out that the spreadsheet was a wonderful tool for many different disciplines. Many other companies came out with their own similar products. Lotus bought the rights to Visicalc in 1985. Shortly after that, the product disappeared.

Page 31: 1 Lesson 11 — Building and Using A User Control Microsoft Visual Basic.NET, Introduction to Programming.

31

Adding the LoanCalculator Control to the FinancialLibrary Project

Page 32: 1 Lesson 11 — Building and Using A User Control Microsoft Visual Basic.NET, Introduction to Programming.

32

Adding the FinancialLibrary to the ModifiedLoanControl Project

Page 33: 1 Lesson 11 — Building and Using A User Control Microsoft Visual Basic.NET, Introduction to Programming.

33

Inheritance Picker Dialog Box

Page 34: 1 Lesson 11 — Building and Using A User Control Microsoft Visual Basic.NET, Introduction to Programming.

34

The ModifiedLoanCalculator Control in the Designer

Page 35: 1 Lesson 11 — Building and Using A User Control Microsoft Visual Basic.NET, Introduction to Programming.

35

Step-by-Step 11.6

Dim CurrentBalance As Decimal = Me.Balance

Dim TotalPayments As Integer = Me.Payments

Dim YearlyInterestRate As Double = Me.Rate

Dim MonthlyPayment As Decimal = Me.Pmt

Dim PaymentNumber As Integer

Dim MonthlyInterestRate As Double = YearlyInterestRate / 1200

Dim MonthlyInterest As Double = 0

Page 36: 1 Lesson 11 — Building and Using A User Control Microsoft Visual Basic.NET, Introduction to Programming.

36

Step-by-Step 11.6

For PaymentNumber = 1 To TotalPayments MonthlyInterest = CurrentBalance * MonthlyInterestRate CurrentBalance = CurrentBalance + MonthlyInterest -

MonthlyPayment lstAmortizationTable.Items.Add(PaymentNumber & _ vbTab & Format(MonthlyInterest, "Currency") & _ vbTab & Format(CurrentBalance, "Currency")) Next

Page 37: 1 Lesson 11 — Building and Using A User Control Microsoft Visual Basic.NET, Introduction to Programming.

37

The ModifiedLoanCalculator Control in an Application

Page 38: 1 Lesson 11 — Building and Using A User Control Microsoft Visual Basic.NET, Introduction to Programming.

38

Building a Custom Interface User Control

A user-drawn control lets the programmer define the look of the user interface.

The biggest difference between a user-drawn control and a regular user control is that the user-drawn control uses no standard parts out of the Toolbox; that is, it contains no text boxes, labels, or buttons. The control’s Paint event procedure builds the visual appearance of the control by using the graphics methods found in System.Drawing.

System.Drawing is a library of classes used to draw graphic images and create graphic objects.

Page 39: 1 Lesson 11 — Building and Using A User Control Microsoft Visual Basic.NET, Introduction to Programming.

39

Step-by-Step 11.7

Dim myFont As System.Drawing.Font = _ New System.Drawing.Font("Arial", 20,

FontStyle.Bold) Dim MyFrameColor As Color = Color.DarkCyan Dim MyBodyColor As Color =

Color.BlanchedAlmond Public TextColor As Color = Color.MistyRose Dim MyFrameWidth As Integer = 30 Dim MyText As String = "Very Pretty Eyes"

Page 40: 1 Lesson 11 — Building and Using A User Control Microsoft Visual Basic.NET, Introduction to Programming.

40

Step-by-Step 11.7

' Declares and instantiates a drawing pen.Dim myPen As System.Drawing.Pen = New

System.Drawing.Pen(MyFrameColor, 30)' Declares and instantiates a SolidBrush Dim myBrush As System.Drawing.SolidBrush = New

System.Drawing.SolidBrush(TextColor)e.Graphics.DrawRectangle(myPen, e.ClipRectangle)e.Graphics.DrawString(MyText, myFont, myBrush,

20, 30)Me.BackColor = MyBodyColor

Page 41: 1 Lesson 11 — Building and Using A User Control Microsoft Visual Basic.NET, Introduction to Programming.

41

Step-by-Step 11.7

ResizeRedraw = True

Public Property FrameColor() As ColorGet FrameColor = MyFrameColorEnd GetSet(ByVal Value As Color) MyFrameColor = Value Me.Refresh()End SetEnd Property

Page 42: 1 Lesson 11 — Building and Using A User Control Microsoft Visual Basic.NET, Introduction to Programming.

42

Step-by-Step 11.7

Public Property pfFont() As FontGet pfFont = myFontEnd GetSet(ByVal Value As Font) myFont = Value Me.Refresh()End SetEnd Property

Page 43: 1 Lesson 11 — Building and Using A User Control Microsoft Visual Basic.NET, Introduction to Programming.

43

Step-by-Step 11.7

Public Property BodyColor() As ColorGet BodyColor = MyBodyColorEnd GetSet(ByVal Value As Color) MyBodyColor = Value Me.Refresh()End SetEnd Property

Page 44: 1 Lesson 11 — Building and Using A User Control Microsoft Visual Basic.NET, Introduction to Programming.

44

Step-by-Step 11.7

Public Property pfText() As StringGet pfText = MyTextEnd GetSet(ByVal Value As String) If Len(Value) = 0 Then MyText = "" Else MyText = Value End If Me.Refresh()End SetEnd Property

Page 45: 1 Lesson 11 — Building and Using A User Control Microsoft Visual Basic.NET, Introduction to Programming.

45

Step-by-Step 11.7

Add a button to the form. Change the name of the button to btnChangeFont. Change the Text property of the button to Change Font. Resize the button to display the entire text. Add a FontDialog control to the form. Double-click btnChangeFont to open the button’s Click event handler. Add the following code:

FontDialog1.ShowDialog()

PictureFrame1.pfFont = FontDialog1.Font

Page 46: 1 Lesson 11 — Building and Using A User Control Microsoft Visual Basic.NET, Introduction to Programming.

46

Historically Speaking

Steve Jobs is partly responsible for Visual Basic. Well, not directly. Steve Jobs and Steve Wozniak started the Apple computer company in a garage in the mid 1970s. In 1979, Jobs visited the Xerox Palo Alto Research Center, PARC, and saw the Alto computer. It had a mouse and a graphical user interface. Jobs instantly recognized the future of computing in the graphical user interface. The Lisa computer, introduced a few years later, was the first imperfect version of this future. The Macintosh computer, presented in 1984, was far more successful and refined. The graphical user interface is now the standard of the industry, and Visual Basic is the fastest and easiest way to deliver programs with that graphical user interface to customers.

Page 47: 1 Lesson 11 — Building and Using A User Control Microsoft Visual Basic.NET, Introduction to Programming.

47

Summary

User controls are a good way to pack commonly used functions and procedures into a portable package.

You can build your own user controls in one of three ways: by combining existing controls and writing code that binds them together; by enhancing an existing control to give it new functionality; or by drawing an original control to provide a new user interface. All three require program code to make the functionality of the control available to the programmer.

A user control has two run‑time behaviors: one when the control is put on an application form, and another when the application containing the control is running.

Page 48: 1 Lesson 11 — Building and Using A User Control Microsoft Visual Basic.NET, Introduction to Programming.

48

Summary

The rules for accessing properties of a user control are the same as the rules for accessing properties for a class definition. Public properties of a user control, that is, properties available for use by the application in which the user control is used, can be declared in the Declarations section with the keyword Public.

To compile a user control so that it may be used in an application, select Build | Build Solution on the menu bar. Once compiled, a user control may be added to an application.

Page 49: 1 Lesson 11 — Building and Using A User Control Microsoft Visual Basic.NET, Introduction to Programming.

49

Summary

To build user controls that you can use in multiple applications, you must add the user controls to a Windows Control Library project.

System.Drawing is a library of classes used to draw graphic images and create graphic objects.

A user-drawn control lets you design a custom interface for a new user control at the cost of having to provide code to draw every line, fill every space with color, and draw each character of text on the face of the control.